我們會在一些代碼中看到遇到“===”和“==”的寫法,三等号與雙等号有什麼不同嗎?在JavaScript中,===表示“恒等于”,==表示“等于”。=表示“指派”。
=:指派,在邏輯運算時也有效;
==:等于運算,但是不比較值的類型;
===:完全等于運算,不僅比較值,而且還比較值的類型,隻有兩者一緻才為真。
運作體會一下以下的代碼就會清楚了:
alert(0 == ""); // true
alert(0 == false); // true
alert("" == false); // true
alert(0 === ""); // false
alert(0 === false); // false
alert("" === false); // false
在複雜一些:
JavaScript 是弱類型語言,這就意味着,等于操作符會為了比較兩個值而進行強制類型轉換。注意0的相等運算,例如:
"" == "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
而恒等于不像普通的等于操作符,不會進行強制類型轉換。這樣的話上述的結果就不太相同了:
"" === "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