比较两个值的不同?使用Object.is()来处理吧

发布于2023-09-20 16:28 阅读 219

我们都知道 JavasSript 是弱类型的,并且当我们使用 == 作比较时,在一些情况下由于类型转换或者说“把两个操作数中的一个转换成另一个,然后在比较”,会出现意想不到的结果。

比如:

0 == ' ' //true
null == undefined //true
[1] == true //true

因此 JavaScript 中给我们提供了全等操作符 ===, 它比不全等操作符更加严格并且不会发生类型转换。但是用 === 来进行比较并不是最好的解决方案。你可能会得到:

NaN === NaN //false
-0 === +0 //true


令人振奋的是,在ES6中,我们有了新的Object.is()方法,这个方法具备===操作符的一些优秀特性,并且更加卓越和精确。在一些特定的场景中,它的表现堪称出色,为我们提供了更佳的对象比较解决方案。

Object.is(-0 , +0); //false
Object.is(0 , ' '); //false
Object.is(null, undefined); //false
Object.is([1], true); //false
Object.is(NaN, NaN); //true


评论

全部评论

{{item.username}}
{{item.comment_content}}
回复

{{reply.username}} 回复:{{reply.replyname}}

{{reply.content}}

{{reply.isshow ? '取消回复' : '回复'}}

作者

新闻哥mosk

新闻哥,擅长创业、职场、自媒体运营方向的话题。