2011-08-03 83 views
1

可能重複:
Javascript === vs == : Does it matter which 「equal」 operator I use?JavaScript的,比較奇怪運營商

我見過 「==!」 在一些瀏覽器擴展程序的源代碼,比較奇怪運營商。代碼片段:

function closedTab(id) { 
    if (openedTabs[id] !== undefined) { 
     openedTabs[id].time = timeNow(0); 
     closedTabs.unshift(openedTabs[id]); 
    } 
} 

這個運算符不是隻用一次,所以應該有一些含義。

是「!==」來自一些JavaScript的魔力?或者它與通常的「!=」相同? 謝謝

+2

請參閱http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use –

回答

2

這就是所謂的嚴格比較算哪裏它不僅價值,而且也爲類型檢查。

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

的差異是由當值發生了什麼是不同類型的。

!==運算符(及其堂兄===)檢查值和類型是否相等。 !===另一方面嘗試在檢查相等之前強制值相同。

例如:

if(5 === "5")  // evaluates to false 
if(5 == "5")  // evaluates to true 

同樣的概念擴展到!=!==

2

這是相同的比較運算符。它比較價值和類型。例如:

if('foobar' == true) // true 
if('foobar' === true) // false