對象到數字的轉換過程如下:
如果對象具有valueof()方法,後者返回一個原始值,則JavaScript將這個原始值轉換爲數字並返回;否則,如果對象具有toString()方法,後者返回一個原始值,JavaScript將這個字符串轉換爲數字並返回;否則,報錯。數組繼承了默認的valueOf()方法,但是數組、函數和正則表達式調用此方法後,只返回對象本身,因此轉換爲數字,還會繼續調用toString()方法,空數組調用toString()返回空字符串,轉換爲數字爲0,new Array(1)同樣因爲雖然長度爲1,但值爲undefined,轉換爲數字仍未0.所以,纔會出現博主提出的疑問。