在比较保证为数字的值时,使用==
与零进行比较根本不是错误或危险。 例如:
var arr = ["foo"];
var arrIsEmpty = (arr.length == 0);
在这些情况下,我倾向于使用==
,这纯粹是一种风格决定。 我希望 JSHint 尊重我的知情意愿。
您知道eqeqeq
选项,对吗? 这就是此错误的来源,将其设置为 false 将使您摆脱这种情况。 或者您是否正在寻找更具体的东西,例如只抑制与0
比较(而不是与其他值的比较)?
eqeqeq 是一般情况。 似乎有一个单独的检查来与 0 进行比较,即使 eqeqeq 为假也会抱怨。
我真正想要的是能够抑制来自 JSHint 的关于使用 == 和 != 的所有形式的抱怨,但正是与 0 的比较阻止了这一点。
嗯,我明白了。 相关代码在这里,它绝对是专门调用该比较(除其他外):
https://github.com/jshint/jshint/blob/6140ade7437799e182347bf2d39ec68c3c3d0263/src/jshint.js#L2201 -L2215
https://github.com/jshint/jshint/blob/6140ade7437799e182347bf2d39ec68c3c3d0263/src/jshint.js#L1338 -L1346
您可以通过其代码禁用此警告。
对于其他人可能很难利用 valueof 的答案,设置"-W041": false
似乎可以解决问题。
谢谢@privman
仅供参考,我还在这里找到了更多详细信息
是否有动机在"eqeqeq": false
时保持W041
警告有效?
它们有效地禁止在受影响的情况下使用==
和!=
。
最有用的评论
对于其他人可能很难利用 valueof 的答案,设置
"-W041": false
似乎可以解决问题。