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