為什么有這樣問題?== 會造成子類型的轉(zhuǎn)換,=== 區(qū)分不了 NaN === NaN (返回false),+0 === -0。
現(xiàn)在統(tǒng)一的做法是參照jquery做法。 統(tǒng)一的做法是全部用===,除一種情況例外,即驗證對象屬性是否存在時,才用==。
es6 直接添加了Object.is()方法。
console.log(Object.is(NaN,NaN)); //true
console.log(Object.is(+0,-0)); // false
es5 如何解決===問題。
Object.defineProperty(Object,'is',{
value: function(x,y){
if(x === y) {
// +0 === -0, false
return x !== 0 || 1/x === x/y;
}
return x !== x && y!== y;
}
configurable: true,
enumerable: false,
writable: false
})