if(json.RowKey!= json.NewRowKey)有什么问题

时间:2012-09-25 05:24:35

标签: javascript jquery

我正在使用lint以及以下内容:

if (json.RowKey != json.NewRowKey)

它给了我一个信息:

Expected '!==' and instead saw '!='.

有人可以解释这意味着什么吗?

4 个答案:

答案 0 :(得分:1)

在比较它们之前,

==将尝试将两个操作数的类型转换为相同。因此"2" == 2true

===不会尝试转换两个操作数的类型,因此如果它们不是同一类型,它们永远不会是===。因此"2" === 2false

最好使用===!==作为默认选项,并在明确要允许类型转换时使用==!=。如果您不希望这两个操作数是不同的类型,那么===!==更有可能达到您的期望。

当事情不完全相等且你的代码不打算让它们相等时,这可以避免编码错误。

==发生的一些奇怪的事情(并且不会发生在===),你可能没想到并且可能导致麻烦。所有这些都评估为true

null == undefined
false == '0' 
0 == '0' 
0 == ''

这里写的更详细:Which equals operator (== vs ===) should be used in JavaScript comparisons?

答案 1 :(得分:1)

!==不相等(价值或类型) 例如: var x = 5; x !== "5" returns true var x = 5; x !== 5 returns false

答案 2 :(得分:0)

这是一个警告,告诉您应该考虑使用!==运算符而不是!=

从表面上看,他们都做同样的事情 - 比较两个项目是否相等。但是,!==确保两个项目首先是相同的类型(也就是说,如果要比较的一个项目是字符串而另一个项目是字符串,它将不会尝试将字符串转换为数字数字),因此通常使用起来更安全,并帮助您避免比较错误。

有关详情,请参阅此处:Which equals operator (== vs ===) should be used in JavaScript comparisons?

答案 3 :(得分:0)

是,

if("1" == 1) //Returns true because it will convert the second 1 into a string to match

但是

"1" !== 1 //Returns false because the first 1 is a string and the second 1 is an integer. 

我们谈论的是变量类型;有两个相等的符号,javascript(和php)会为你改变变量(将整数1转换为字符串1以使匹配成为真),但是对于第二个语句,它不会。

1 === 1 //True
1 === "1" //False
1 == "1" //True
1 == 1 //True

希望我的回答对你有意义。