为什么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.0
和00.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关于房产访问者的相关信息。