这很奇怪。这就是Chrome中的JavaScript控制台(版本42.0.2311.135,64位)所发生的情况。
> 0
< 0
> 00
< 0
> 0.0
< 0
> 00.0
X Uncaught > SyntaxError: Unexpected number
Firefox 37.0.2也是如此,但错误信息是:
SyntaxError: missing ; before statement
关于JavaScript解析数字的方式可能有一些技术性的解释,也许它只能在修改控制台提示符时发生,但它似乎仍然是错误的。
为什么这样做?
答案 0 :(得分:77)
表达式0.0
和00.0
的解析方式不同。
0.0
被解析为数字文字 1 00.0
被解析为:
00
- 八进制数字文字 2 .
- 属性访问者0
- 标识符名称您的代码会引发语法错误,因为0
不是有效的JavaScript标识符。以下示例有效,因为toString
是有效的标识符:
00.toString
1 Section 7.8.3 - 前导0后面可以跟着小数点分隔符或 ExponentPart
2 Section B.1.1 - 前导0后面可以跟 OctalDigits
答案 1 :(得分:22)
00
被评估为八进制数,.0
被评估为访问该数字的属性。但由于不允许将整数用作属性访问器,因此会抛出错误。
对于任何其他对象,您会收到相同的错误:
'string'.0 // Syntax error: unexpected number
({}).0 // Syntax error: unexpected number
您可以在MDN上找到有关属性访问者的相关信息。