Javascript jsHint错误提示我应该使用===&引用;
我的代码给了我一个jsHint错误。我正在尝试这样做:Javascript jsHint错误提示我应该使用===&引用;,javascript,Javascript,我的代码给了我一个jsHint错误。我正在尝试这样做: if (data.result == 't' || task == 'show') { 但是它告诉我应该用“==”替换“==”有人能告诉我为什么它会给出这个消息吗?==是严格的相等运算符 =是普通的相等运算符,=将其操作数转换为相同的类型(如果它们不是相同的类型) 因此,有一种危险,像“”==0这样的东西将为您提供true,尽管它们的类型不同 由于涉及到隐式转换,您可能不知道,因为它是自动发生的,因此存在一些难以跟踪的错误或bug的危险和
if (data.result == 't' || task == 'show') {
但是它告诉我应该用“==”替换“==”有人能告诉我为什么它会给出这个消息吗?
==
是严格的相等运算符
=
是普通的相等运算符,=
将其操作数转换为相同的类型(如果它们不是相同的类型)
因此,有一种危险,像“”==0
这样的东西将为您提供true,尽管它们的类型不同
由于涉及到隐式转换,您可能不知道,因为它是自动发生的,因此存在一些难以跟踪的错误或bug的危险和潜在性
=
不会转换其操作数,它只会比较它们。静默类型转换可能是错误的来源。如果您避免在比较时在数据类型之间进行转换,那么您就避免了许多错误。==
意味着没有类型强制的相等=
运算符不会进行转换,它只会比较操作数
sdfx给出的示例非常有助于理解这一点:
0==false // true
0===false // false, because they are of a different type
1=="1" // true, auto type coercion
1==="1" // false, because they are of a different type
发件人:
JavaScript具有严格和类型转换(抽象)比较。
严格比较(例如==)仅在操作数为
同一类型。更常用的抽象比较(例如==)
在进行比较之前,将操作数转换为相同类型。
对于关系抽象比较(例如,看看这个,但他没有写
”==0
,所以你没有回答这个问题。@LightnessRacesinOrbit我只是举了一个可能出错的例子。无论如何,昆汀总结了我想说的话。