js中== 和 != 的轉換規則
阿新 • • 發佈:2020-08-01
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