我在 JSLint 中使用这段代码
var string = "Hello";
if (string == "Hello") {
string = "World";
}
我收到了这个错误
Expected '===' and instead saw '=='.
if (string == "Hello") {
为什么 JSLint 会抛出这个错误?
我在 JSLint 中使用这段代码
var string = "Hello";
if (string == "Hello") {
string = "World";
}
我收到了这个错误
Expected '===' and instead saw '=='.
if (string == "Hello") {
为什么 JSLint 会抛出这个错误?
来自== 和 !=下的JSLint文档
== 和 != 运算符在比较之前进行强制类型转换。这很糟糕,因为它会导致 ' \t\r\n' == 0 为真。这可以掩盖类型错误。JSLint 无法可靠地确定 == 是否被正确使用,因此最好不要使用 == 和 != 并始终使用更可靠的 === 和 !== 运算符。
如果你只关心一个值是真还是假,那么使用简写形式。代替
(富!= 0)
说啊
(富)
而不是
(foo == 0)
说
(!foo)
有一个 eqeq 选项允许使用 == 和 !=。
如何告诉 JSLint 不要抛出这个错误。
使用 JSLint 指令eqeq
像这样
/*jslint eqeq: true*/
所以完整的代码看起来像
/*jslint eqeq: true*/
var string = "Hello";
if (string == "Hello") {
string = "World";
}
因为 JSLint 认为==
永远不应该使用(平等系统有点奇怪)。
我的建议是学习如何==
和===
工作,以及他们如何比较(检查规范)。然后,您可以自己做出最好的决定,而不是简单地标记一个语言结构,并用从不使用它。