JS隱式的類型轉換

由於JS的弱類型特性,在進行JS的==, 排序運算符, 加減乘除,在對非原始值進行操作時,都會調用內部的toPrimitive()方法。

// 例外
{} + [] // 0 {}會被認爲代碼塊 故只剩下 +[], +0 0
// 當進行復雜類型轉換時,會會調用toPrimitive()的內部函數
toPrimitive(input,preferedType?)
preferedType是期望轉換的類型

 1. 如果input是原始值,直接返回這個值;

 2. 否則,如果input是對象,調用input.valueOf(),如果結果是原始值,返回結果;

 3. 否則,調用input.toString()。如果結果是原始值,返回結果;

 4. 否則,拋出錯誤。

     如果轉換的類型是String,2和3會交換執行,即先執行toString()方法。
     
 [] + [] // ""
 [] + {} // "[object Object]"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章