== 和 != 已经变成不好的做法了吗?

Has == and != become bad practise?

几个月以来,我的 IDE (WebStorm) 突出显示 JavaScript 常规相等运算符并发出以下警告:

Comparioson a == b may cause unexpected type coercion.
This inspection reports usages of JavaScript quality operators which may cause unexpected
type coercions. It is considered a good practice to use the type-safe equality operators
=== and !== instead of their regular counterparts == and !=.

我知道这两个运算符的不同行为,并且我倾向于使用它们,因为它们的行为不同,例如。对于惰性类型转换:

if(parseInt(val) == val) // val can be safely converted to int

但是,IDE 正在向 所有 次出现的 == 添加警告,因此上面的内容 不再正确。我可以将所有这些部分转换成更难读的东西:

if(parseInt(val).toString() === val) // be happy webstorm

真的是这样吗?还是我应该 ignore/disable 这些警告?

是的,这是近二十年来的最佳做法。

警告非常明确(甚至解释了 为什么 会出现警告),您会在 JavaScript 书籍以及广泛的其他书籍中找到相同的建议网络。

所以,我不明白为什么你会考虑忽略甚至禁用它。


您可以在此处找到有关何时选择 == 以及何时选择 === 的更多信息:

  • When is it OK to use == in JavaScript?

我认为任何形式的类型强制,如果对于运行时可能未知的类型(如任何动态语言)来说是意外的,都是不好的做法。

例如,这两个都是真的:

 "0" == false
 "0"

虽然这是错误的:

 false