object.is是javascript中比===更精确的严格相等判断方法,能正确处理nan、+0和-0:nan与自身相等,+0与-0不等,其余行为与===一致。

Object.is 是 JavaScript 中用于严格判断两个值是否相等的内置方法,它比 === 更精确,尤其在处理 NaN、+0 和 -0 这些特殊值时表现一致且符合数学直觉。
Object.is 的核心特点
它解决了 === 在两个边界情况下的“不合理”行为:
-
NaN === NaN返回false,但Object.is(NaN, NaN)返回true -
+0 === -0返回true,但Object.is(+0, -0)返回false
基本用法格式
调用方式简单直接:
Object.is(value1, value2)
返回布尔值:true 表示完全相等,false 表示不相等。
常见对比示例
可以这样验证它的行为:
-
Object.is(1, 1)→true -
Object.is('a', 'a')→true -
Object.is(NaN, NaN)→true(===不行) -
Object.is(+0, -0)→false(===会误判为true) -
Object.is(null, undefined)→false(和===一致)
适用场景建议
适合用在需要高精度相等判断的地方,比如:
- 实现不可变数据结构的 deepEqual 判断(配合递归或库如 Immutable.js)
- Redux 或 Zustand 等状态管理中比较引用或原始值是否真正变化
- 单元测试中验证
NaN是否被正确生成或传播
日常开发中若无特殊需求,仍可优先使用 ===;但涉及浮点运算、零符号或 NaN 处理时,Object.is 是更可靠的选择。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











