javascript,奇怪的比较运算符

时间:2011-08-03 20:07:08

标签: javascript

  

可能重复:
  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魔术吗?或者它只相当于通常的“!=”? 感谢

5 个答案:

答案 0 :(得分:4)

不同之处在于!==在比较之前不会尝试将其操作数转换为相同的类型。与=====相同。

请参阅此问题:Difference between == and === in JavaScript

答案 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