1. 程式人生 > 其它 >js型別轉換

js型別轉換

[]+{} // '[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。