为什么00.0会导致语法错误?

这很奇怪 这是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 

关于JavaScriptparsing数字的方式可能有一些技术性的解释,也许只有在控制台提示符下修改时才会发生,但似乎仍然是错误的。

为什么这样做?

expression式0.000.0被不同地parsing。

  • 0.0被parsing为数字文字1
  • 00.0被parsing为:
    • 00 – 八进制数字文字2
    • . – 财产访问者
    • 0 – 标识符名称

您的代码会引发语法错误,因为0不是有效的JavaScript标识符。 下面的例子工作,因为toString是一个有效的标识符:

 00.toString 

1 第7.8.3节 – 前导0可以跟随小数分隔符ExponentPart
2 B.1.1节 – 前导0可以跟着OctalDigits

00被评估为八进制数,而.0被评估为访问该数字的属性。 但是由于整数不允许用作属性访问器,所以会引发错误。

你得到任何其他对象相同的错误:

 'string'.0 // Syntax error: unexpected number ({}).0 // Syntax error: unexpected number 

您可以在MDN上find关于房产访问者的相关信息。