js型別轉換
阿新 • • 發佈:2021-12-19
[]+{} // '[object Object]' {}+[] // 0 []+1 // '1' {}+1 // 1 ({})+1 // '[object Object]1'
[].valueOf()➡️ [], [].toString()➡️''
{}放在開頭會當成程式碼塊,{}+1 {}+[]相當於+1 +[]
({})防止核心將其當作程式碼塊,({}).valueOf()➡️{},({}).toString()➡️'[object Object]'
toPrimitive(input,preferedType?)
input是輸入的值,preferedType是期望轉換的型別,他可以是字串,也可以是數字。
如果要轉換成的型別是number,會執行以下步驟:
1. 如果input是原始值,直接返回這個值;
2. 否則,如果input是物件,呼叫input.valueOf(),如果結果是原始值,返回結果;
3. 否則,呼叫input.toString()。如果結果是原始值,返回結果;
4. 否則,丟擲錯誤。
如果轉換的型別是String,2和3會交換執行,即先執行toString()方法。
你也可以省略preferedType,此時,日期會被認為是字串,而其他的值會被當做Number。