object-is源码解析

介绍

这是 es-shims 小组提供的解决方案,用于在不支持es6的环境中使用 Object.is() 方法。众所周知,要优先使用 === 而不是 == ,但三等也存在一定问题,而 Object.is 则弥补了他。

Object.is=== 的区别就在于 +0 不等于 -0NaN 等于 NaN

源码 object-is 1.1.5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
'use strict';

// 自身不等则一定是NaN
var numberIsNaN = function (value) {
return value !== value;
};

module.exports = function is(a, b) {
// 排除 +0 === -0 为true,因为 +Infinity !== -Infinity
if (a === 0 && b === 0) {
return 1 / a === 1 / b;
}
if (a === b) {
return true;
}
// 排除 NaN === NaN 为false
if (numberIsNaN(a) && numberIsNaN(b)) {
return true;
}
return false;
};


参考链接:

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

给阿姨来一杯卡普基诺~

支付宝
微信