在JS中,常常需要判断两个对象是否相等,常见的方法有==,===,!=,!==
ES6中,新增了一个方法Object.is(a, b),用于判断两个值是否相等,但是在某些情况下会和上述的判断符有些差异
Object.is('foo', 'foo') //true
Object.is(window, window) //true
Object.is([], []) //false
Object.is(null, null) //true
区别:
简单的说,两等号判等会在比较时自动进行类型转换,而三等号不会,如果类型不同,会直接返回false,而Object.is()则是在三等号的基础上,又特别处理了NaN、-0、+0,保证了-0和+0不再相同,但是要注意的是Object.is(NaN, NaN)会返回true
参考链接:
https://developer.mozilla.org/en-US/docs/Web/javaScript/Reference/Global_Objects/Object/is
新闻热点
疑难解答