Number([])與Number({})

Number()函數轉換規則如下:
轉換規則:

1)如果是Boolean值,true和false將分別轉換爲1和0。

2)如果是數字值,只是簡單的傳入和返回。

3)如果是null值,返回0。

4)如果是undefined,返回NaN。

5)如果是字符串,遵循下列規則:

如果是字符串中只包含數字(包括前面帶正號或負號的情況),則將其轉換爲十進制數值,即“1”變成1,“123”會變成123,而“011”會變成11(前導的零被忽略了);
如果字符串中包含有效的浮點格式,如“1.1”,則將其轉換爲對應的浮點數值(同樣也會忽略前導零);
如果字符串中包含有效的十六進制格式,例如"0xf",則將其他轉換爲相同大小的十進制整數值;
如果字符串是空的(不包含任何字符),則將其轉換爲0;
如果字符串中包含除上述格式之外的字符,則將其他轉換成NaN.

6)如果是對象,則調用對象的valueOf()方法,然後依照前面的規則轉換返回的值。如果轉換的結果是NaN(或者仍然不匹配前五條規則),則調用的對象的toString()方法,然後再次依照前面的規則轉換返回的字符串值。

(1) Number([]) == 0
  [].valueOf() -> []
  [].toString() -> ''
  Number('') -> 0
(2)Number({}) == NaN
 ({}).valueOf() -> {}
 ({}).toString() -> '[object Object]'
 Number('[object Object]') -> NaN

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章