JSLint字符串比较错误预期'==='而是看到'=='

时间:2012-07-18 06:40:35

标签: javascript jslint

我在JSLint中使用此代码

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

我收到此错误

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

为什么JSLint会抛出此错误?

2 个答案:

答案 0 :(得分:2)

来自 ==和!=

下的JSLint docs
  

==和!=运算符在比较之前输入强制。这是不好的   因为它导致'\ t \ r \ n'== 0为真。这可以掩盖类型   错误。 JSLint无法可靠地确定是否正在使用==   正确的,所以最好不要使用==和!=并始终使用   更可靠的是===和!==运算符。

     

如果您只关心某个值是真实的还是虚假的,那么请使用短片   形成。而不是

     

(foo!= 0)

     

只是说

     

(富)

     

而不是

     

(foo == 0)

     

     

(!富)

     

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

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

使用JSLint指令 eqeq

像这样

/*jslint eqeq: true*/

所以完整的代码看起来像

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

答案 1 :(得分:0)

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

我的建议是了解=====的工作方式,以及它们的比较方式(check the specification)。 然后,您可以自己做出最佳决策,而不是简单地使用从不使用来标记语言结构。