如果要在JavaScript中检查相等性,有两个比较运算符:双等号运算符(==)和三等号运算符(===)。简而言之,双等号(==)只比较值,而三等号(===)既比较值又比较类型。但是还有第三个选项,Object.is(),除了NaN、+0和-0之外,它的行为与三等号与运算符相同。下面是一些示例以进一步阐明:{}==={};//falseObject.is({},{});//false1===1;//falseObject.is(1,1);//false+0===-0;//trueObject.is(+0,-0);//falseNaN===NaN;//falseObject.is(NaN,NaN);//true下面的代码在Object.is在ES5中模拟:Object.defineProperty(Object,'is',{value:function(x,y){if(x===y){//对于+0不等于-0的情况returnx!==0||1/x===1/y;}//对于NaNreturnx!==x&&y!==y;},configurable:true,enumerable:false,writable:true});
