根据jshint的错误检测更改==到===是否安全,无需进一步检查

时间:2013-04-09 11:47:34

标签: javascript jshint

我正在检查基于JSHint工具的JavaScript代码。此工具检测到许多关于使用“===”而不是“==”的错误。我的问题是,按照JSHint的说法是否安全?在替换== by ===之前,是否需要进一步检查(关于它们的类型和值)?谢谢!

4 个答案:

答案 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建议永远不要使用==。然而,这只是他的意见。

实际上,如果你的代码中有这样的检查,并知道你在做什么(类型会被强制),甚至可能依赖于这种行为,那么使用这些比较是绝对可以的。您可以取消选中“关于不安全比较的警告”。

如果您想要替换那些比较,您必须检查您的代码是否按预期工作。