首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript ES6.===与Object.is的区别

Javascript ES6.===与Object.is的区别
EN

Stack Overflow用户
提问于 2017-04-18 16:19:44
回答 2查看 980关注 0票数 0

我们知道=====之间的区别--基本上,===阻止Javascript引擎转换其中一个参数,以使这两个参数都具有相同的类型。但是现在,在ES6中,出现了一个新的操作符-- Object.is,这有点让人困惑(或者===现在令人困惑.)

从Mozila网站(同一性)我们可以看到不同之处:

同一性比较:

代码语言:javascript
运行
复制
x          y    ==      ===     Object.is
+0         -0   true    true    false
NaN        NaN  false   false   true

因此,对我来说,看起来Object.is在比较参数方面更加严格,如果是的话,问题就产生了-- ===有多不严格(称为“严格平等”) :)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-18 16:28:05

从你链接的那篇文章中:

何时使用Object.is与三重等于

除了对待NaN的方式外,Object.is对零的唯一特殊行为可能是对某些元编程方案的追求,特别是当您的工作需要反映Object.defineProperty的某些特性时,尤其是在属性描述符方面。如果您的用例不需要这一点,则建议避免使用Object.is,而使用===。即使您的需求涉及对两个NaN值的比较结果为真,通常情况下,特殊情况下的NaN检查(使用以前版本的ECMAScript中可用的isNaN方法)要比计算周围的计算如何影响您在比较中遇到的任何零的符号要容易。

票数 1
EN

Stack Overflow用户

发布于 2017-04-18 16:22:52

通过MDN

根据===运算符,这与相等也不一样。===运算符(以及==运算符)将数字值-0和+0视为相等,并将Number.NaN视为不等于NaN。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43477383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档