手写原理 | Object.is

Object.is()方法判断两个值是否为同一个值

语法

1
Object.is(val1, val2)

改变

这里讨论Object.is()相对于严格相等===所作的改变:

  • Object.is(NaN,NaN) === true
  • Object.is(-0, +0) === true

手写实现

1
2
3
4
5
6
7
8
9
10
11
function myObjectIs(val1, val2) {
if (val1 === NaN && val1 === NaN) {
return true;
};

if (val1 === 0 && val2 === 0) {
return 1/val1 === 1/val2;
};

return val1 === val2;
}