使用 API: Object.is() 方法判断两个值是否为同一个值
Polyfill:
if(!Object.is){Object.is=function(x,y){// SameValue algorithmif(x===y){// Steps 1-5, 7-10// Steps 6.b-6.e: +0 != -0returnx!==0||1/x===1/y;}else{// Step 6.a: NaN == NaNreturnx!==x&&y!==y;}};}扩展:
JavaScript提供三种不同的值比较操作:
其中:
- ===:进行相同的比较,不进行类型转换 (如果类型不同, 只是总会返回 false )
- ==:执行类型转换,比较两个值是否相等
Object.is :与 === 相同,但是对于 NaN 和 -0 和 +0 进行特殊处理, Object.is(NaN, NaN) 为 true , Object.is(+0, -0) 为 false
使用 API:
Object.is()方法判断两个值是否为同一个值Polyfill:
扩展:
JavaScript提供三种不同的值比较操作:
Object.is(ECMAScript 2015/ ES6 新特性):同值相等其中:
Object.is:与 === 相同,但是对于NaN和-0和+0进行特殊处理,Object.is(NaN, NaN)为true,Object.is(+0, -0)为false