JSLint字符串比较错误应为'==='而是看到'=='

JSLint string comparison error Expected '===' and instead saw '=='

本文关键字:字符串 JSLint 比较 错误      更新时间:2023-11-26

我在JSLint 中使用此代码

var string = "Hello";
if (string == "Hello") {
    string = "World";
}

我收到这个错误

Expected '===' and instead saw '=='.
if (string == "Hello") {

为什么JSLint抛出此错误?

来自==和=

==和!=运算符在进行比较之前进行类型强制。这太糟糕了因为它导致'''t''t'==0为true。此can掩码类型错误。JSLint无法可靠地确定是否正在使用==正确,因此最好不要使用==和!=并且总是使用越可靠操作员。

如果你只关心一个值是真是假,那么就用short表单。而不是

(foo!=0)

只要说

(foo)

而不是

(foo==0)

比如

(!foo)

有一个eqeq选项,允许使用==和!=。

如何告诉JSLint不要抛出此错误。

使用JSLint指令eqq

像这个

/*jslint eqeq: true*/

所以完整的代码看起来像

/*jslint eqeq: true*/
var string = "Hello";
if (string == "Hello") {
    string = "World";
}

因为JSLint认为永远不应该使用==(等式系统有点奇怪)。

我的建议是学习=====是如何工作的,以及它们是如何比较的(查看规范)然后,你可以自己做出最好的决定,而不是简单地用标记语言结构,永远不要使用它