1. 程式人生 > 其它 >JavaScript中 == 與 === 的區別

JavaScript中 == 與 === 的區別

JavaScript中提供了兩種方式用於比較值是否相等,其中:

==  :  用於寬鬆比較。
=== : 用於嚴格比較。

下面用幾個例子來看看二者的異同之處,你也可以在瀏覽器環境下,點選 Ctrl+Shift+J 來開啟控制檯測試結果。

var foo = 42;
var js = 42;
var bar = "42";

console.log(foo == bar);   //true
console.log(foo === bar);  //false

console.log(foo == js);    //true
console.log(foo === js);   //true

可見 == 並不會對型別有嚴格的審查,而 === 則檢查出了 String 和 Number 型別的不同。

同樣,!= 和 !== 也具有著類似的特性:
var foo = 42;
var bar = "42";
console.log(foo != bar);   //false
console.log(foo !== bar);  //true


在日常開發中,我們應該儘可能使用 === 來比較值,以避免不必要的bug。 那麼,=== 是否是萬能的呢?來看下面的測試案例:
console.log(+0 == -0);   //true
console.log(NaN === NaN);  //false

+0、-0、NaN這樣的邊界值在使用 === 比較時,出現了我們不希望看到的結果。
為此,在ES6中,提出了 Object.is() 方法來解決這一問題:

console.log(Object.is(2, 2));    // true
console.log(Object.is(2, "2"));  // false

console.log(Object.is(+0, -0));  // false
console.log(Object.is(NaN, NaN));// true


== 和===異同