我正在使用 lint 和以下内容:
if (json.RowKey != json.NewRowKey)
它给了我一个信息:
Expected '!==' and instead saw '!='.
有人可以解释这是什么意思吗?
我正在使用 lint 和以下内容:
if (json.RowKey != json.NewRowKey)
它给了我一个信息:
Expected '!==' and instead saw '!='.
有人可以解释这是什么意思吗?
==
将尝试在比较它们之前将两个操作数的类型转换为相同。因此"2" == 2
是true
。
===
不会尝试转换两个操作数的类型,因此如果它们不是同一类型,则它们永远不会是===
. 因此"2" === 2
是false
。
最好使用===
and!==
作为您的默认选择,并且仅在您明确希望允许类型转换时使用==
or 。!=
如果您不期望这两个操作数是不同的类型,那么===
and!==
更有可能做您所期望的。
当事情并不真正相等并且您的代码不打算让它们相等时,这可以避免编码错误。
一些奇怪的事情会发生==
(并且不会发生===
),您可能不会想到并可能导致麻烦。所有这些评估为true
:
null == undefined
false == '0'
0 == '0'
0 == ''
!== 不相等(既不是值也不是类型) 例如:
var x = 5; x !== "5" returns true
var x = 5; x !== 5 returns false
这是一个警告,告诉您应该考虑使用!==
运算符而不是!=
.
从表面上看,他们都在做同样的事情——比较这两个项目是否不相等。但是,!==
首先要确保两个项目的类型相同(也就是说,如果要比较的一个项目是字符串而另一个项目是数字,它不会尝试将字符串转换为数字),所以它是通常使用起来更安全,可以帮助您避免比较错误。
有关更多详细信息,请参阅此处:JavaScript 比较中应使用哪个等号运算符 (== vs ===)?
是的,
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
希望我的回答对你有意义。