Javascript Object.is() 用法详解

举报
林欣 发表于 2024/11/15 11:45:52 2024/11/15
【摘要】 Object.is() 定义Object.is() 是 JavaScript 中的一个内置方法,用于比较两个值是否严格相等(即 === 比较的结果),但在处理某些特殊情况时,它提供了与 === 不同的行为。具体来说,Object.is() 在以下两个方面与 === 存在差异:+0 和 -0 被认为是不相等的。NaN 与 NaN 被认为是相等的。Object.is() 方法提供了一种更精确的...

Object.is() 定义

Object.is() 是 JavaScript 中的一个内置方法,用于比较两个值是否严格相等(即 === 比较的结果),但在处理某些特殊情况时,它提供了与 === 不同的行为。具体来说,Object.is() 在以下两个方面与 === 存在差异:

  1. +0-0 被认为是不相等的。
  2. NaNNaN 被认为是相等的。

Object.is() 方法提供了一种更精确的方式来比较两个值是否相等,特别是在处理数字的特殊值时。

用法详解

语法

Object.is(value1, value2)
  • value1:要比较的第一个值。
  • value2:要比较的第二个值。

返回值

  • 如果两个值严格相等(考虑到了 +0-0 的区别以及 NaN 的特殊情况),则返回 true
  • 否则,返回 false

示例代码

console.log(Object.is('foo', 'foo'));       // true
console.log(Object.is({}, {}));            // false,对象比较的是引用
console.log(Object.is(+0, -0));             // false,+0 和 -0 被视为不相等
console.log(Object.is(-0, -0));             // true
console.log(Object.is(NaN, 0/0));           // true,NaN 与 NaN 被视为相等
console.log(Object.is(NaN, NaN));           // true
console.log(Object.is(42, 42));             // true
console.log(Object.is(true, true));         // true
console.log(Object.is(false, false));       // true
console.log(Object.is(null, null));         // true
console.log(Object.is(undefined, undefined)); // true
console.log(Object.is([], []));             // false,数组比较的是引用
console.log(Object.is([], []));             // false,同上
console.log(Object.is(function() {}, function() {})); // false,函数比较的是引用

特殊情况说明

  • Object.is(+0, -0) 返回 false,因为 +0-0 虽然被认为是相等的(使用 ===),但在 Object.is() 中它们被视为不相等。
  • Object.is(NaN, NaN) 返回 true,因为 NaNNaNObject.is() 中被认为是相等的,这与 === 不同,因为在 ===NaN !== NaN

使用场景

  • 当需要精确比较两个值是否相等时,特别是在处理数字的特殊值(如 +0-0NaN)时,可以使用 Object.is()
  • 在编写需要精确判断相等性的算法或逻辑时,Object.is() 可以提供比 === 更准确的结果。

总的来说,Object.is() 提供了一种更严格、更精确的相等性比较方法,特别适用于处理 JavaScript 中的一些特殊情况。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。