在 javascript 中,可使用 == 來比較兩個數據是否相等,若是兩個數據的類型不一樣,那麼,將在進行轉換後進行比較,轉換的規則以下:javascript
l 若是其中一個操做數的類型爲 Boolean ,那麼,首先將它轉換爲數字類型,false 轉換爲 0, true 將轉換爲 1。java
l 若是其中一個操做數的類型是字符串,另一個爲數字類型,那麼,將字符串轉換爲數字進行比較。對象
l 若是其中一個操做數的類型是字符串,另一個爲 object 類型,那麼,將調用對象的 toString 方法以後,比較字符串。ip
l 若是其中一個操做數的類型是數字類型,另一個爲 object 類型,那麼,將對象轉換爲數值後進行數字比較。字符串
如下的規定了一些特殊的比較:object
l null 和 undefined 是相等的。引用
l null 和 undefined 不會轉換爲任何其餘類型方法
l 若是任何一個操做的結果爲 NaN,那麼相等比較返回 false,不相等比較返回 true。注意,即便兩個操做數都爲 NaN,返回結果同樣是 false,也就是說,NaN 不等於 NaN。數據
l 若是兩個操做數都是對象,那麼比較它們引用的值,若是引用同一個對象,那麼,返回真,不然,返回假。字符
alert(null == undefined); // true
alert(undefined == null); // true
alert(true == 1); // true
alert(false == 0); // true
alert(true == 2); // false
var obj = {};
alert(10 == obj); // false
徹底相同的比較 === 和不徹底相等 !==
徹底相同的比較用來比較不進行轉換是否相等,例如:
var a = "100";
var b = 100;
alert(a == b); // true
alert(a === b); // false
== 比較將返回真,由於 「100」 首先轉換爲數字 100, 而後與數字 100 進行比較,結果相等。
=== 比較將返回假,由於字符串 」100」 不通過轉換的話,與數字 100 不相等。
!== 用於比較在不轉換的狀況下,是否不相等。
alert(a != b); // false
alert(a !== b); // true