"=="的自動轉換git
自動轉換優先級:number>boolean>String,越小越先轉換github
console.log(0==false); //true
console.log(1==true); //true
console.log(2==true); //flase
//這個過程實際上是Boolean類型轉換爲數字的過程
複製代碼
console.log(""==0); //true
console.log("12"==12); //true
console.log("12a"==12); //false
//String自動轉換時只能轉換純數字的字符串
複製代碼
console.log(""==false); //true
console.log("s"==true); //true
//字符串轉換爲boolean均爲true
複製代碼
null的本質是空對象,自動轉換時會處理空對象的引用地址,轉換爲數字與其餘對象的處理函數
console.log(null==0); //false
//地址是數字,且確定不是0
console.log(null==false); //false
console.log(null==true); //false
//地址是數字,比較時會將boolean轉換爲數字
console.log(null=="null"); //false
console.log(null==""); //false
//地址爲數字,比較時會將String轉換爲數字
複製代碼
undefined表示未定義,不帶任何東西,你們能夠理解爲老頑固(偷笑)spa
console.log(undefined==0); //false
//沒法自動轉換數字
console.log(undefined==false); //false
console.log(undefined==true); //false
//沒法自動轉換boolean
console.log(undefined==""); //false
console.log(undefined=="undefined"); //false
//沒法自動轉換爲String
console.log(undefined==null); //true
console.log(undefined===null); //false
//null是空對象,會被認爲是undefined,但嚴格的來講二者是不相等的
複製代碼
"+"會嘗試將兩端的值嘗試轉換爲字符串或數字。優先級:String>Numbercode
console.log(1+false); //1
console.log(1+true); //2
複製代碼
console.log(""+1); //"1"
console.log("1"+1); //"11"
//運算時,String優先級大於Number,Number轉換爲String
複製代碼
console.log(""+false); //false
console.log(""+true); //true
console.log(typeof(""+true)); //String
//按照優先級,會將boolean轉換爲String
複製代碼
console.log(null+1); //1
//null的本質是空對象,強制轉換會轉換爲0
複製代碼
console.log(undefined+0); //NaN
//強制轉換數字時爲NaN
console.log(Boolean(undefined)); //false
複製代碼
String:
這裏說下String()和toString()的區別
toString()能夠將除了null、undefined之外的一切對象轉換爲String,且toString()能夠接收第二個參數,將字符串的進制進行改變
String()能夠將任何對象轉換爲String,String只有一個傳參
Boolean:
console.log(Boolean(0)); //false
console.log(Boolean(1)); //true
console.log(Boolean(2)); //true
console.log(Boolean(-2)); //true
//除0之外均爲true
複製代碼
Number:
console.log(Number("1")); //1
console.log(Number("1a")); //NaN
console.log(parseInt("1a")); //1
console.log(parseInt("a1")); //NaN
//使用Number進行轉換時必須是純數字字符串,不然爲NaN
//使用parseInt轉換時,頭部必須有數字,不然爲NaN
//parseInt是全局函數,不屬於Number,與Number強制轉換有區別
Boolean:
console.log(Boolean("")); //false
console.log(Boolean("true")); //true
console.log(Boolean("false")); //true
//String爲空是flase,其餘均爲true
複製代碼
Number:
console.log(Number(false)); //0
console.log(Number(true)); //1
String:
輸出對應的字符串
複製代碼
Number:
console.log(Number(null)); //0
String:
輸出對應的字符串
Boolean:
console.log(Boolean(null)); //false
複製代碼
Number:
console.log(Number(undefined)); //NaN
//此種方式強制轉換依舊爲非數字
String:
輸出對應的字符串
Boolean:
console.log(Boolean(undefined)); //false
複製代碼
碼字不易,後面還會放出各類文章,喜歡的關注一下我吖,大家的關注是我最大的動力對象
github:github.com/hn-failteip
我的博客:hn-failte.github.io字符串