Object.is与===的主要差异在于:1. Object.is(NaN, NaN)为true,而NaN===NaN为false;2. Object.is(+0, -0)为false,而+0===-0为true。

JavaScript 中 Object.is 和严格相等运算符(===)在大多数情况下行为一致,但存在两个关键差异:处理 NaN 和区分 +0 与 -0。
1. NaN 的相等性判断
严格相等(===)认为 NaN 不等于任何值,包括它自己;而 Object.is 认为 NaN 等于 NaN。
NaN === NaN // false
Object.is(NaN, NaN) // true这使得 Object.is 更适合需要精确判断值是否为 NaN 的场景,无需依赖 isNaN() 或 Number.isNaN()。
2. +0 与 -0 的区分
=== 运算符认为 +0 和 -0 相等;Object.is 则将它们视为不同值。
立即学习“Java免费学习笔记(深入)”;
+0 === -0 // true
Object.is(+0, -0) // false
这是因为 IEEE 754 浮点标准中 +0 和 -0 虽然数值相同,但符号位不同。Object.is 尊重这种底层差异。
实际使用建议
日常比较推荐使用 ===,简洁且性能略优。只有在需要严格语义一致性时才用 Object.is:
模拟 SameValueZero 算法的场景(如 Map 键比较) 需要确保 NaN 被识别为“相同” 关注 -0 和 +0 区别的数学计算或序列化逻辑
基本上就这些,不复杂但容易忽略。
以上就是JavaScript 的 Object.is 方法与严格相等运算符有何细微差别?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1525558.html
微信扫一扫
支付宝扫一扫