等值比較就是指比較兩個(gè)表達(dá)式(或操作數(shù))的值是否相等,比較方法有:1、使用“==”運(yùn)算符,語法“a==b”;2、使用“===”運(yùn)算符,語法“a===b”;3、使用“Object.is()”方法,語法“Object.is(a , b)”。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
javascript中的等值比較
在javascript中,等值比較就是指比較兩個(gè)表達(dá)式(或操作數(shù))的值是否相等。
我們都知道 JavaScript 是松散類型,并且在某些情況下,當(dāng)使用 ==
來做等值比較時(shí),會給你意想不到的結(jié)果。這是因?yàn)槭褂?==
做等值比較時(shí),JavaScript 會對2個(gè)比較的值進(jìn)行隱式強(qiáng)制轉(zhuǎn)換。
0 == ' ' //true null == undefined //true [1] == true //true
所以 JavaScript 還為我們提供了三個(gè)等號運(yùn)算符 ===
,它更嚴(yán)格,不強(qiáng)制轉(zhuǎn)換比較值,但實(shí)用 ===
比較有些時(shí)候也不是最好的解決方案:
NaN === NaN //false
有個(gè)好消息是,在 ES6 中有一個(gè)新的更好更準(zhǔn)確的辦法 Object.is()
,它與 ===
具有相同的功能,而且在一些特殊情況下表現(xiàn)良好:
Object.is(0 , ' '); //false Object.is(null, undefined); //false Object.is([1], true); //false Object.is(NaN, NaN); //true
下面這張圖詳細(xì)說明了 ==
,===
和 Object.is()
等值比價(jià)的異同:
【