• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

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

ES2015(ES6) web前端中文站 2年前 (2017-09-02) 861次浏览 已收录 0个评论

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

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

更多精彩内容请看 web 前端中文站
http://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/

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


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:[回归基础]JavaScript 等值比较 == ,=== 和 Object.is()
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址