1. 程式人生 > 實用技巧 >js中== 和 != 的轉換規則

js中== 和 != 的轉換規則

js中== 和 != 的轉換規則

  1.如果有一個運算元是布林型,在比較相等性之前先轉換數值 false–0 true–1

  2.如果有一個運算元是字串,另一個為數值,在比較相等性之前先將字串轉換數值 不為數值NaN

  3.如果有一個數為物件,另一個不是,則先呼叫物件的valueOf()方法,得到基本資料型別值按照之前規則比較

這兩個操作符在進行比較時要遵循以下規則

  1.null == undefined
  2.比較相等性之前不能將null 和 undefined 轉換成其他任何值
  3.NaN 不等於任何值 NaN不等於NaN
  4.如果兩個數都是物件 則比較是不是指向同一個物件

     console.log([] == []);//false
        console.log([] == ![]);//true
        console.log([] === ![]);//false
        
        console.log({} == {});//false
        console.log({} == !{});//false
        console.log({} === !{});//false
        
        console.log(null == undefined);//true

如果複雜資料型別和簡單資料型別進行運算, 先呼叫複雜資料型別的valueof方法, 如果呼叫了valueof方還無法進行運算,

那麼就呼叫複雜資料型別的toString方法

這裡用陣列和物件舉例

       console.log([] == ![]); // true
        // ![]  ==  false
        console.log([].valueOf());// []
        console.log([].toString());// 空 ''
        console.log(typeof [].toString()); //string

        // '' == false
        // 0 == 0
        // true

        console.log({} == !{}); //
false //!{} == false console.log({}.valueOf());//{} console.log({}.toString());//"[object Object]" // "[object Object]" == false // NaN == 0 // false