"=="的自動轉換javascript
自動轉換優先級:number>boolean>String,越小越先轉換java
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的本質是空對象,自動轉換時會處理空對象的引用地址,轉換爲數字與其餘對象的處理git
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表示未定義,不帶任何東西,你們能夠理解爲老頑固(偷笑)github
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>Number函數
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
碼字不易,後面還會放出各類文章,喜歡的關注一下我吖,大家的關注是我最大的動力spa
github:github.com/hn-failtecode
我的博客:hn-failte.github.io對象