javascript中的相等操作符==
阿新 • • 發佈:2018-12-21
javascript中的相等操作符(==)
if ([] == false) { console.log(1) } // 輸出1
if ({} == false) { console.log(2) } // 不輸出
if ([]) { console.log(3) } // 輸出3
if([1] == [1]) { console.log(4) } // 不輸出
相等運算子用來比較相同型別的資料時,與嚴格相等運算子完全一樣。
原始型別的值會轉換成數值再進行比較。
物件(包括陣列和函式)與原始型別的值比較時,物件轉換成原始型別的值,再進行比較。
高程第51頁很好的解釋了在轉換不同的資料型別時,相等和不相等操作符遵循的基本規則:
- 如果有一個運算元是布林值,則在比較相等性之前先將其轉換為數值——false 轉換為0,而true轉換為1;
- 如果一個運算元是字串,另一個運算元是數值,在比較相等性之前先將字串轉換為數值;
- 如果一個運算元是物件,另一個運算元不是,則呼叫物件的valueOf()方法,用得到的基本型別值按照前面的規則進行比較;
- 如果兩個運算元都是物件,則比較它們是不是同一個物件如果兩個運算元都指向同一個物件。
1和2 會將false轉換為0, 3則轉為Boolean,4中引用地址不同