== 和 === 如何使用?

为什么有这样问题?== 会造成子类型的转换,=== 区分不了 NaN === NaN (返回false),+0 === -0

现在统一的做法是参照jquery做法。 统一的做法是全部用===,除一种情况例外,即验证对象属性是否存在时,才用==

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
})

推荐阅读更多精彩内容