你不知道的js之隱式強制型別轉換
阿新 • • 發佈:2019-01-02
你不知道的js之隱式強制型別轉換
1.| |和&&
注:
- undefined
- null
- false
- +0
- -0
- NaN
- ” ”
以上為假值,其餘都是boolean真值
&&和| |運算子的返回值並不一定是布林型別,而是兩個運算元其中的一個值
var a = 42;
var b = "abc";
var c = "null";
a||b;//42
a&&b;//"abc"
c||b;//"abc"
c&&b;//null
| |和&&會對第一個運算元執行判斷,如果其值不是布林值,先進行boolean強制型別轉換 然後再判斷
對於| | 如果說條件判斷是true就返回第二個運算元 , false就返回第一個運算元
對於&& 如果說條件判斷是true就返回第一個運算元 , false就返回第二個運算元
條件語句中的判斷也會先轉化為布林值在進行判斷
2.相等比較中的隱式強制型別轉換(==)
1.字串與數字之間——先把字串轉換為數字再比較
var a = 42;
var b = "42";
a==b;//true
2.其他型別與布林型別——先把布林型別轉換為數字再比較
var a = 42;
var b = true;
a==b;//false
3.null與undefined——–直接相等
undefined==null//true
null==undefined//true
以下是經常出現的相等比較
"0" == null; //false
"0" == undefined; //false
"0" == false ; //true
"0" == NaN; //false
"0" == 0; //true
"0" == ""; //false
false == null; //false
false == undefined; //false
false == NaN; //false
false == 0; //true
false == ""; //true
false == []; //true
false == {}; //false
"" == null; //false
"" == undefined; //false
"" == NaN; //false
"" == 0; //true
"" == []; //true
"" == {}; //false
0 == null; //flase
0 == undefined; //flase
0 == NaN; //flase
0 == []; //true
0 == {}; //flase
作者總結
0 false "0" [] ""任意兩個之間通過強制型別轉化都是相等的
注:false== “false” //false和[ ] == [ ] //false
==兩邊有[] "" 0 儘量不要使用==
兩邊都有true和false 千萬不要使用==
本文為作者原創,寫的有不對的地方希望大神能指出來