有点经验的开发者,通过观察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()
能够得到正确的返回值。