[回归基础]JavaScript 等值比较 == ,=== 和 Object.is()

[回归基础]JavaScript 等值比较 == ,=== 和 Object.is()

我们都知道 JavaScript 是松散类型,并且在某些情况下,当使用 == 来做等值比较时,会给你意想不到的结果。这是因为使用 == 做等值比较时,JavaScript 会对2个比较的值进行隐式强制转换。

更多精彩内容请看 web前端中文站
www.lisa33xiaoq.net 可按Ctrl + D 进行收藏

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

所以 JavaScript 还为我们提供了三个等号运算符 === ,它更严格,不强制转换比较值,但实用 === 比较有些时候也不是最好的解决方案:

 NaN === NaN //false 

有个好消息是,在 ES6 中有一个新的更好更准确的办法 Object.is(),它与 === 具有相同的功能,而且在一些特殊情况下表现良好:

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

Mozilla 团队不认为 Object.is=== 更“严格”。他们说我们应该考虑这种方法来处理 NaN-0+0, 但总的来说,我认为 Object.is 在实际应用中是一个很好的做法。

下面这张图详细说明了 =====Object.is() 等值比价的异同:

[回归基础]JavaScript 等值比较 == ,=== 和 Object.is()JavaScript 中的相等性判断

原文链接:http://www.jstips.co/en/javascript/why-you-should-use-Object.is()-in-equality-comparison/

【注:本文源自网络文章资源,由站长整理发布】

0
如无特殊说明,文章均为原作者原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到