在JavaScript中,何时应该使用===和==、!==和!=等运算符?

34

4
这是大约1000个重复问题之一。 - Paolo Bergantino
1
你能贴一下那些其他问题的链接吗?我总是确保先看一眼,显然标题不够清晰,很难找到。也许把这个问题加进去会帮助指引人们朝着正确的方向搜索,以防他们没有搜索到确切的内容。 - Matt
1
我的想法完全一致。这里有一个例子:https://dev59.com/Z3RC5IYBdhLWcg3wROpQ - GManNickG
2
我认为问题在于您无法搜索 === - GManNickG
1
我更新了 https://dev59.com/Z3RC5IYBdhLWcg3wROpQ 的标题,希望这样能更容易找到。你不能搜索 === 但你可以搜索 "equal." - Patrick McElhaney
显示剩余2条评论
3个回答

40

=== 是身份运算符,用于测试值和类型是否相等。

因此...

"3" == 3 // true
"3" === 3 // false
1 == true // true
1 === true // false
"1" == true // true
"1" === true // false

因此,当您关心值和类型是否相等或不相等时,请使用身份运算符===或!==。


"1" == true.. 什么?我以为我知道这些规则,谢谢你的提醒。 - Kiss Koppány
@KissKoppány 如果你感到困惑,那是因为1和0是布尔运算符。==会进行类型转换,所以'1' == 1 == true,'0' == 0 == false。===不进行类型转换。通常最好使用===,除非你期望你的变量经常发生类型更改,这对我来说很奇怪。 - tdc

9

在JavaScript中,“普通”的==运算符执行类型转换,并尽力将字符串视为数字或将对象视为所需的字符串。而更长的===运算符将不进行类型转换,而是在类型内进行严格比较。


5

===!====!=相同,但还会检查变量类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接