我正在使用lint以及以下内容:
if (json.RowKey != json.NewRowKey)
它给了我一个信息:
Expected '!==' and instead saw '!='.
有人可以解释这意味着什么吗?
答案 0 :(得分:1)
==
将尝试将两个操作数的类型转换为相同。因此"2" == 2
为true
。
===
不会尝试转换两个操作数的类型,因此如果它们不是同一类型,它们永远不会是===
。因此"2" === 2
为false
。
最好使用===
和!==
作为默认选项,并在明确要允许类型转换时使用==
或!=
。如果您不希望这两个操作数是不同的类型,那么===
和!==
更有可能达到您的期望。
当事情不完全相等且你的代码不打算让它们相等时,这可以避免编码错误。
==
发生的一些奇怪的事情(并且不会发生在===
),你可能没想到并且可能导致麻烦。所有这些都评估为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
希望我的回答对你有意义。