可能的重复问题:
在JavaScript比较中应该使用哪个等于运算符(== vs ===)?
JavaScript中!=和!==运算符有什么区别?
看看这个提交:
!=
在JavaScript中是否与!==
相同?
可能的重复问题:
在JavaScript比较中应该使用哪个等于运算符(== vs ===)?
JavaScript中!=和!==运算符有什么区别?
看看这个提交:
!=
在JavaScript中是否与!==
相同?
它们的含义微妙地不同。
!=
检查值
!==
检查值和类型
'1' != 1 // false (these two are the same)
'1' !== 1 // true (these two are **not** the same).
在先前的例子中,表达式的前半部分是一个字符串,后半部分是一个整数。!== 表示不完全相同
!= 表示不相等
AND "相同意味着相等并且类型相同。"
来自 5.4. 相等运算符:
"在 JavaScript 中,数字、字符串和布尔值根据它们的值进行比较。... 另一方面,对象、数组和函数则根据引用进行比较。"
--
所以总结一下,它们是否相同?不是,因为除了等同性之外,还有一个额外的测试 !==(而不是 !=)来测试类型的相同性以及等同性。
4 !== '4' returns true (and 4 === '4' returns false)
4 != '4' returns false (and 4 == '4' returns true)
最大的区别在于 != 执行类型转换。也就是说,在检查相等性之前,一个值实际上被强制转换为另一个值。这就是为什么像Amadiere的答案中所述的那样:
'1' != 1
当==和!=用于比较时,它们会执行强制转换并导致不准确的结果。同样,==和===也是如此。一般情况下,除非你需要执行强制转换,否则应避免使用==和!=。使用===和!==来确切地检查你想要的结果。
!==
并查看结果。甚至可以尝试输入javascript !==
- 这样谷歌就不会帮忙了。 - Mottie!=
有关的重复问题:https://dev59.com/bXI-5IYBdhLWcg3wYXL8 - Crescent Fresh