我在讀《Javascript高級程序設計》一書時,當讀到Number Type下對于Number()函數轉化規則一部分時,發現他有如下一個介紹:When applied to objects, the valueOf() method is called and thereturned value is converted based on the previously described rules.If that conversion results in NaN, the toString() method is called andthe rules for converting strings are applied.按照它的描述,我的理解是,對于一個Object,先執行Object的valueOf()函數,如果最后轉化結果是NaN,就再采用Object的toString()函數進行轉化。但是我做了如下實驗:var obj = { a: "hello", valueOf: function() { return this.a;
}, toString: function() { return 1;
}
}Number(obj) // 結果:NaN所以是不是書里描述錯誤了,應該是如果沒有valueOf()函數的時候才執行toString(),否則只是執行valueOf()
Number()函數傳入Object時的情況
qq_笑_17
2018-08-09 09:10:07