可能重复:
Javascript === vs == : Does it matter which “equal” operator I use?
我在某些Chrome扩展程序的源代码中遇到了“!== ”奇怪的比较运算符。代码段:
function closedTab(id) {
if (openedTabs[id] !== undefined) {
openedTabs[id].time = timeNow(0);
closedTabs.unshift(openedTabs[id]);
}
}
此运算符不仅仅使用一次,因此应该有一些含义。
“!== ”来自一些JavaScript魔术吗?或者它只相当于通常的“!=”? 感谢
答案 0 :(得分:4)
不同之处在于!==
在比较之前不会尝试将其操作数转换为相同的类型。与===
和==
相同。
答案 1 :(得分:3)
!==是非身份比较运算符。
!=将强制两种类型匹配
!==不会强制这两种类型
举几个例子:
3 == "3" // true - the operands are coerced to the same type, then compared and they match
3 === "3" // false - the operands are not coerced to the same type, so do not match
3 != "3" // false
3 !== "3" // true
答案 2 :(得分:2)
这称为严格比较运算符,它不仅检查值,还检查类型。
答案 3 :(得分:2)
差异来自于值不同类型时会发生什么。
!==
运算符(及其表兄===
)检查值和类型的相等性。另一方面,!=
和==
在检查相等性之前尝试强制值相同。
例如:
if(5 === "5") // evaluates to false
if(5 == "5") // evaluates to true
同样的概念扩展到!=
和!==
答案 4 :(得分:2)
这是一个完全相同的比较运算符。它比较价值和类型。例如:
if('foobar' == true) // true
if('foobar' === true) // false