千家信息网

如何使用JavaScript中的Object.is()与严格相等运算符

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,如何使用JavaScript中的Object.is()与严格相等运算符,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。三重相等运算符 ==
千家信息网最后更新 2026年11月02日如何使用JavaScript中的Object.is()与严格相等运算符

如何使用JavaScript中的Object.is()与严格相等运算符,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

三重相等运算符 === 严格检查2个值是否相同:

1 === 1;    // => true 1 === '1';  // => false 1 === true; // => false

但是,ES2015规范引入了 Object.is(),其行为与严格的相等运算符几乎相同:

Object.is(1, 1);    // => true Object.is(1, '1');  // => false Object.is(1, true); // => false

主要问题是:什么时候使用 Object.is() 代替严格的相等性检查?让我们找出答案。

1. 严格相等检查操作符

首先,让我们快速回顾一下严格的相等运算符是如何工作的。

当两个值的类型相同且持有相同的值时,严格相等检查运算符的计算结果为 true。

例如,以下原始值是相等的,因为它们是相同的类型且具有相同的值:

1         === 1;         // => true 'abc'     === 'abc';     // => true true      === true;      // => true null      === null;      // => true undefined === undefined; // => true

严格相等运算符不执行类型的强制转换,即使操作符持有合理的相同值,但是不同类型的操作符,它们也不是严格相等的:

1    === '1';       // => false 1    === true;      // => false null === undefined; // => false

对对象执行严格相等检查时,对象仅与自身严格相等:

const myObject = { prop: 'Value' }; myObject === myObject;  // => true

即使2个对象的属性和值完全相同,它们的值也不同:

const myObject1 = { prop: 'Value' }; const myObject2 = { prop: 'Value' }; myObject1 === myObject2; // => false

以上比较方案在 Object.is(valueA,valueB) 中的工作原理完全相同。

严格相等检查和 Object.is() 之间的区别在于,如何处理 NaN 和如何处理负零 -0。

首先,NaN(非数字)并不严格等于任何其他值,即使使用另一个 NaN:

NaN === NaN; // => false NaN === 1;   // => false

其次,严格相等运算符不能将 -0 与 +0 区分开:

-0 === +0; // => true

严格相等运算符使用严格相等比较算法。

http://www.ecma-international.org/ecma-262/7.0/index.html#

sec-strict-equality-comparison

2. Object.is()

Object.is(valueA,valueB) 以与严格相等运算符相同的方式检查相等性的参数,但有两个区别。

首先,NaN 等于另一个 NaN 值:

Object.is(NaN, NaN); // => true Object.is(NaN, 1);   // => false

其次,Object.is() 区分 -0 和 +0:

Object.is(-0, +0); // => false

与严格相等运算符相比,Object.is() 使用相同值比较算法。

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-samevalue


在大多数情况下,严格相等运算符是比较值的好方法。

如果你想直接检查 NaN 值或对负零和正零进行更严格的区分,那么 Object.is() 是一个不错的选择。

Object.is() 作为比较值的函数性方法也很有用,例如在函数式编程中。

看完上述内容,你们掌握如何使用JavaScript中的Object.is()与严格相等运算符的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

运算符 运算 相同 检查 方法 类型 对象 操作符 问题 不同 两个 内容 函数 更多 算法 工作 不错 原始 束手无策 为此 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 中智农互联网科技 北京路客互联网科技有限公司 广州百单互联网科技有限公司 互联网科技公司的优势 科技创新与互联网经济 金融科技创新监管互联网金融 嘟嘟瓜互联网科技 无线互联网科技 互联网女皇 腾讯科技 广州紫鲸互联网科技 江阴互联网智能科技产品进口 互联网5g黑科技有哪些 科技类公司包括互联网吗 互联网科技资金流入 互联网科技新闻 山东蛋芒互联网科技有限公司 华人运通互联网科技公司 互联网科技创业有什么好项目 高科技和互联网的现代国家 保险科技 互联网保险 互联网科技公司简介 上游互联网科技 互联网科技公司介绍 互联网科技宣传片 成都玖崟互联网科技有限公司乐商圈怎么样 为客找房互联网科技公司怎么样 山东有哪些互联网科技公司 互联网金融运营模式中的金融科技 上海旺乐尼互联网科技有限公司
0