我正在检查基于 JSHint 工具的 JavaScript 代码。这个工具检测到很多关于使用“===”而不是“==”的错误。我的问题是遵循 JSHint 所说的内容是否安全?在将 == 替换为 === 之前,我是否需要进一步检查(关于它们的类型和值)?谢谢!
问问题
85 次
4 回答
2
是的,你应该。
如果您在没有考虑类型强制的情况下编写代码,则可能会发生一些您没想到的错误,例如
'' == '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
于 2013-04-09T11:50:21.427 回答
1
我的问题是遵循 JSHint 所说的内容是否安全?
不,您可能取决于给出的类型强制==
。
在将 == 替换为 === 之前,我是否需要进一步检查(关于它们的类型和值)?
是的。
于 2013-04-09T11:48:41.590 回答
1
""==0 // true
""===0 // false
所以你不能盲目地改变你的所有代码并期望它像以前一样工作。这就是为什么你的代码应该有单元测试。所以你知道什么不再起作用了。
于 2013-04-09T11:49:13.807 回答
1
建议替换==
为,===
因为它使代码更易于预测且不易出错。Douglas Crockford 建议永远不要使用==
. 然而,这只是他的意见。
实际上,如果你在代码中有这样的检查并且知道你在做什么(类型会被强制),甚至可能依赖于这种行为,那么使用这些比较是绝对可以的。您可以取消选中“关于不安全比较的警告”。
如果您想替换这些比较,您肯定必须检查您的代码是否继续按预期工作。
于 2013-04-09T11:54:17.367 回答