Object.is()

Object.is(value1: any, value2: any): boolean

Object.is()方法接收两个参数,用于判断两个值是否为 相同值。,返回一个布尔值。

下面给出Object.is()方法的判断规则:

如果以下其中一项成立,则两个值相同:

  • 都是 undefined
  • 都是 null
  • 都是 true 或者都是 false
  • 都是长度相同、字符相同、顺序相同的字符串
  • 都是相同的对象(意味着两个值都引用了内存中的同一对象)
  • 都是 BigInt 且具有相同的数值
  • 都是 symbol 且引用相同的 symbol 值
  • 都是数字且
    • 都是 +0
    • 都是 -0
    • 都是 NaN
    • 都有相同的值,非零且都不是 NaN

Object.is() 和 === 的区别:唯一区别在于它们处理带符号的 0 和 NaN 值的时候。

=== 运算符(和 == 运算符)将数值 -0 和 +0 视为相等,但是会将 NaN 视为彼此不相等。

直接上代码验证:

Object.is(0, -0)    // false
Object.is(+0, -0)    // false
Object.is(-0, -0)    // true

+0 == -0    // true
+0 === -0    //true
Object.is(NaN, 0 / 0); // true
Object.is(NaN, Number.NaN); // true

NaN == NaN    // false
NaN === NaN    // false

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值