JavaScript 相等和全等
■知識點
等值檢測運算符包括4個,詳細說明如表所示。
比較運算符 | 說 明 |
==(相等) | 比較兩個操作數的值是否相等 |
!=(不相等) | 比較兩個操作數的值是否不相等 |
===(全等) | 比較兩個操作數的值是否相等,同時檢測它們的類型是否相等 |
!==(不全等) | 比較兩個操作數的值是否不相等,同時檢測它們的類型是否不相等 |
在相等運算中,應注意以下幾個問題。
如果操作數是布爾值,則先轉換為數值,其中false轉為0, true轉換為1。
如果一個操作數是字符串,另一個操作數是數字,則先嘗試把字符串轉換為數字。
如果一個操作數是字符串,另一個操作數是對象,則先嘗試把對象轉換為字符串。
如果一個操作數是數字,另一個操作數是對象,則先嘗試把對象轉換為數字。
如果兩個操作數都是對象,則比較引用地址。如果引用地址相同,則相等,否則不等。
在全等運算中,應注意以下幾個問題。
如果兩個操作數都是簡單的值,則只要值相等,類型相同,就全等。
如果一個操作數是簡單的值,另一個操作數是復合型對象,則不全等。
如果兩個操作數都是復合型對象,則比較引用地址是否相同。
■實例設計
下面是特殊操作數的比較。
console.log("1" == 1) //返回true。字符串被轉換為數字
console.log(true == 1) //返回true。true被轉換為1
console.log(false == 0) //返回true。false被轉換為0
console.log(null == 0) //返回false
console.log(undefined == 0) //返回false
console.log(undefined == null) //返回true
console.log(NaN == "NaN") //返回false
console.log(NaN == 1) //返回false
console.log(NaN == NaN) //返回false
console.log(NaN != NaN) //返回true
提示:
NSN與任何值都不相等,包括它自己。mull和undefined值相等。在相等比輕中,null和undefined不允許被轉換為其他類型的值。
下面是特殊操作數的全等比較。
console.log(null === undefined) //返回false
console.log(0 === "0") //返回false
console.log(0 === false) //返回false)
下面是兩個對象的比較,由于它們都引用了相同的地址,所以返回true。
var a = {};
var b = a;
console.log(a === b); //返回true
下面兩個對象雖然結構相同,但是地址不同,所以不全等。
var a = {};
var b = {};
console.log(a === b); //返回false
點擊加載更多評論>>