今天偶然在百度知道上發現這個問題,提問時間是2016年,居然到了2019也沒有一個正確的回覆,技術方向還真不一定就"百度以下,你就知道"。
其實稍微有點經驗的開發者,通過觀察123.toString()執行的報錯提示就能知道結果:Uncaught SyntaxError: Invalid or unexpected token 非法語句,123是個Number,Numer本身具有toString方法,即使沒有,錯誤應該是:Uncaught TypeError: toString is not a function 這樣才對,所以錯誤不是出在型別轉換上。
- 那麼為什麼 123..toString()就可以呢?
原來 JavaScript採用 IEEE 754 的規範 雙精度數字,JavaScript 中只有一種數字型別:基於 IEEE 754 標準的雙精度 。它並沒有為整數給出一種特定的型別,所以所有的數字都是小數。
123.toString() 等價於 123.0toString(),這樣的語句當然行不通。
這也更合理解釋了為什麼123..toString()、123 .toString()、(123).toString()能夠得到正確的返回值。