最近,我在通过 JSLint 运行一些代码时遇到了这个错误。我认为这个错误的有趣之处在于它自动假设所有 == 都应该是 ===。
这真的有意义吗?我可以看到很多情况下您不想比较类型,而且我担心这实际上可能会导致问题。
“预期”这个词意味着每次都应该这样做……这对我来说没有意义。
IMO,盲目使用===
,无需尝试理解 how 类型转换作品没有多大意义。
首要的fear关于等于运算符==
取决于比较类型的比较规则可以使运算符不具有传递性,例如,如果:
A == B AND
B == C
并不能真正保证:
A == C
例如:
'0' == 0; // true
0 == ''; // true
'0' == ''; // false
严格等于运算符===
当您比较相同类型的值时实际上并不需要,最常见的示例:
if (typeof foo == "function") {
//..
}
我们比较一下结果typeof
运算符,其中总是 a string,有一个string文字...
或者,例如,当您知道类型强制规则时,检查某些内容是否是null
or undefined
某物:
if (foo == null) {
// foo is null or undefined
}
// Vs. the following non-sense version:
if (foo === null || typeof foo === "undefined") {
// foo is null or undefined
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)