今天偶然在百度知道上发现这个问题,提问时间是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()能够得到正确的返回值。