我正在检查基于JSHint工具的JavaScript代码。此工具检测到许多关于使用“===”而不是“==”的错误。我的问题是,按照JSHint的说法是否安全?在替换== by ===之前,是否需要进一步检查(关于它们的类型和值)?谢谢!
答案 0 :(得分:2)
如果您编写了代码而未考虑类型强制,那么您可能会发生一些错误,like
'' == '0' // false
0 == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == undefined // false
false == null // false
null == undefined // true
' \t\r\n ' == 0 // true
答案 1 :(得分:1)
我的问题是,遵循JSHint的说法是否安全?
没有。您可能依赖对==
给出的类型强制。
在替换== by ===?
之前,是否需要进一步检查(关于它们的类型和值)
是
答案 2 :(得分:1)
""==0 // true
""===0 // false
因此您无法盲目地更改所有代码并期望它像以前一样工作。这就是你的代码应该进行单元测试的原因。所以你知道什么不再起作用了。
答案 3 :(得分:1)
==
替换===
是一项建议,因为它使代码更容易预测,并且更不容易出错。 Douglas Crockford建议永远不要使用==
。然而,这只是他的意见。
实际上,如果你的代码中有这样的检查,并知道你在做什么(类型会被强制),甚至可能依赖于这种行为,那么使用这些比较是绝对可以的。您可以取消选中“关于不安全比较的警告”。
如果您想要替换那些比较,您必须检查您的代码是否按预期工作。