译者:王二狗
原文:www.jstips.co/en/javascri…
注意啦:点赞再看,养成习惯,你们的支持是我持续分享的最大动力😸
我们都知道JS是一门松散类型的语言,当我们在代码中使用==进行运算时,它往往给我们意想不到的结果,出现这种结果的原因就是,==运算符在进行运算时,会进行类型转换。
我们来看一下下面几个例子:
0 == ' ' //true
null == undefined //true
[1] == true //true
正是由于上面的原因,出现了===运算符,它比==更加的严格,同时不会进行类型转换,然而'==='并不是你在进行相等运算时最好的解决方案:
NaN === NaN //false
好消息是,es6中出现了的Object.is(),它具有与===相同的特性,并且在某些特殊情况下的表现也非常好:
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的,但总的来说,我认为它现在在实际应用中是一个很好的实践。
告诫自己,即使再累也不要忘记学习,成功没有捷径可走,只有一步接着一步走下去。 共勉!