1. 程式人生 > >javascript中的相等操作符==

javascript中的相等操作符==

javascript中的相等操作符(==)

if ([] == false) { console.log(1) }  // 輸出1
if ({} == false) { console.log(2) }  // 不輸出
if ([]) { console.log(3) }           // 輸出3
if([1] == [1]) { console.log(4) }    // 不輸出

相等運算子用來比較相同型別的資料時,與嚴格相等運算子完全一樣。

原始型別的值會轉換成數值再進行比較。
物件(包括陣列和函式)與原始型別的值比較時,物件轉換成原始型別的值,再進行比較。

高程第51頁很好的解釋了在轉換不同的資料型別時,相等和不相等操作符遵循的基本規則:

  1. 如果有一個運算元是布林值,則在比較相等性之前先將其轉換為數值——false 轉換為0,而true轉換為1;
  2. 如果一個運算元是字串,另一個運算元是數值,在比較相等性之前先將字串轉換為數值;
  3. 如果一個運算元是物件,另一個運算元不是,則呼叫物件的valueOf()方法,用得到的基本型別值按照前面的規則進行比較;
  4. 如果兩個運算元都是物件,則比較它們是不是同一個物件如果兩個運算元都指向同一個物件。

1和2 會將false轉換為0, 3則轉為Boolean,4中引用地址不同