Object.is() 同值相等

Object.is() 同值相等

同值相等的底层实现 Object.is()
Object.is() 是 ES6抛出来的方法
ES5并没有暴露js引擎的同值相等的方法

不进行隐式类型转换 '1’与 1

var a = 1
var b = '1'
var res = Object.is(a, b)
console.log(res); // false

+0 与 0 与 -0

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

NaN 与 NaN 相等

var a = NaN
var b = NaN
var res = Object.is(a, b)
console.log(res); // true

undefined 与 undefined 相等

var res = Object.is(undefined, undefined)
console.log(res); // true

null 与 null 相等

var res = Object.is(null, null)
console.log(res); // true

对象

var obj = {}
const res = Object.is(obj,obj) // 同一引用相等
const res = Object.is({},{}) // 不同引用不相等

手写

要点

  1. -0 !== +0
  2. NaN === NaN
Object.myIs = function (a, b) {
  if (a === b) {
    // 用来判断 0 的情况
    // 1 / +0 = Infinity   1 / -0 = -Infinity
    // Infinity !== -Infinity
    return a !== 0 || 1 / a === 1 / b;
  }
  // 用来判断 NaN 的情况 js中NaN !== NaN
  return a !== a && b !== b;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值