不畏惧失败是创造力的一个基本要素。——<艾尔文·兰德博士>
我们都知道JavaScript
是松散类型的,在某些情况下,与'=='
进行质量比较时,它特别落后。与'=='
进行比较会由于强制性或强制转换“转换2的其中之一”而产生了意外的结果。然后将操作数与对方的类型进行比较”。
1 | 0 == ' ' //true |
因此,他们为我们提供了更严格的三元等于运算符’===’,并且不强制操作数,但是与'==='
进行比较并不是您可以获得的最佳解决方案:
1 |
|
好消息是,在ES6中有一个新的 “Object.is()”
,它更好,更精确,它具有与 “===”
相同的功能,而且在某些特殊情况下,其表现还不错:
1 | Object.is(0 , ' '); //false |
Mozilla团队认为 Object.is
不会比 '==='
更严格,他们说我们应该考虑该方法如何处理 NaN,-0和+0
,但总的来说,我认为这是一个好习惯在实际应用中。
参考
- ghttps://www.jstips.co/en/javascript/why-you-should-use-Object.is()-in-equality-comparison/
- MDN - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness
关注【公众号】,了解更多。
赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!