gpt4 book ai didi

JavaScript ES6。 === 和 Object.is 之间的区别

转载 作者:行者123 更新时间:2023-12-01 03:47:23 24 4
gpt4 key购买 nike

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

从 Mozila 网站 ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness ) 我们可以看到差异:

相同性比较:

x          y    ==      ===     Object.is
+0 -0 true true false
NaN NaN false false true

所以,对我来说,看起来像 Object.is在比较参数时更加严格,如果是这样,就会出现问题 - === 有多不严格? (称为“严格平等”):)

最佳答案

来自您链接的文章:

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

除了处理 NaN 的方式之外,一般来说,Object.is 对零的特殊行为可能唯一令人感兴趣的是在追求某些元编程方案时,特别是在您需要时涉及属性描述符。努力反射(reflect) Object.defineProperty 的一些特征。如果您的用例不需要这样做,建议避免使用 Object.is 并使用 === 代替。即使您的要求涉及两个 NaN 值之间的比较计算结果为 true,通常情况下,对 NaN 检查(使用 ECMAScript 早期版本中提供的 isNaN 方法)进行特殊处理比弄清楚周围的计算如何影响您在比较中遇到的任何零的符号。

关于JavaScript ES6。 === 和 Object.is 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43477383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com