我在讀《Javascript高級程序設(shè)計》一書時,當(dāng)讀到Number Type下對于Number()函數(shù)轉(zhuǎn)化規(guī)則一部分時,發(fā)現(xiàn)他有如下一個介紹: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,先執(zhí)行Object的valueOf()函數(shù),如果最后轉(zhuǎn)化結(jié)果是NaN,就再采用Object的toString()函數(shù)進行轉(zhuǎn)化。但是我做了如下實驗:var obj = { a: "hello", valueOf: function() { return this.a;
}, toString: function() { return 1;
}
}Number(obj) // 結(jié)果:NaN所以是不是書里描述錯誤了,應(yīng)該是如果沒有valueOf()函數(shù)的時候才執(zhí)行toString(),否則只是執(zhí)行valueOf()
Number()函數(shù)傳入Object時的情況
qq_笑_17
2018-08-09 09:10:07