我們會(huì)在一些代碼中看到遇到“===”和“==”的寫(xiě)法,三等號(hào)與雙等號(hào)有什么不同嗎?在JavaScript中,===表示“恒等于”,==表示“等于”。=表示“賦值”。
- =:賦值,在邏輯運(yùn)算時(shí)也有效;
- ==:等于運(yùn)算,但是不比較值的類(lèi)型;
- ===:完全等于運(yùn)算,不僅比較值,而且還比較值的類(lèi)型,只有兩者一致才為真。
運(yùn)行體會(huì)一下以下的代碼就會(huì)清楚了:
alert(0 == ""); // true
alert(0 == false); // true
alert("" == false); // true
alert(0 === ""); // false
alert(0 === false); // false
alert("" === false); // false
在復(fù)雜一些:
JavaScript 是弱類(lèi)型語(yǔ)言,這就意味著,等于操作符會(huì)為了比較兩個(gè)值而進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換。注意0的相等運(yùn)算,例如:
"" == "0" // false
0 == "" // true
0 == "0" // true
false == "false" // false
false == "0" // true
false == undefined // false
false == null // false
null == undefined // true
" \t
" == 0 // true
而恒等于不像普通的等于操作符,不會(huì)進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換。這樣的話(huà)上述的結(jié)果就不太相同了:
"" === "0" // false
0 === "" // false
0 === "0" // false
false === "false" // false
false === "0" // false
false === undefined // false
false === null // false
null === undefined // false
" \t
" === 0 // false