JavaScript 中Object.is()

Posted by cl9000 on May 13, 2020

不畏惧失败是创造力的一个基本要素。——<艾尔文·兰德博士>

我们都知道JavaScript是松散类型的,在某些情况下,与'=='进行质量比较时,它特别落后。与'=='进行比较会由于强制性或强制转换“转换2的其中之一”而产生了意外的结果。然后将操作数与对方的类型进行比较”。

1
2
3
0 == ' ' //true
null == undefined //true
[1] == true //true

因此,他们为我们提供了更严格的三元等于运算符’===’,并且不强制操作数,但是与'==='进行比较并不是您可以获得的最佳解决方案:

1
2

NaN === NaN //false

好消息是,在ES6中有一个新的 “Object.is()”,它更好,更精确,它具有与 “===” 相同的功能,而且在某些特殊情况下,其表现还不错:

1
2
3
4
Object.is(0 , ' '); //false
Object.is(null, undefined); //false
Object.is([1], true); //false
Object.is(NaN, NaN); //true

Mozilla团队认为 Object.is 不会比 '===' 更严格,他们说我们应该考虑该方法如何处理 NaN,-0和+0,但总的来说,我认为这是一个好习惯在实际应用中。

参考

关注【公众号】,了解更多。



支付宝打赏 微信打赏

赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!