This is weird. This is what happens at the JavaScript console in Chrome (version 42.0.2311.135, 64-bit).
> 0
< 0
00
is evaluated as an octal number and .0
is evaluated as accessing that number's property. But since integers are not allowed to be used as property accessors, the error is thrown.
You get the same error for any other object:
'string'.0 // Syntax error: unexpected number
({}).0 // Syntax error: unexpected number
You can find related information about property accessors on MDN.
The expressions 0.0
and 00.0
are parsed differently.
0.0
is parsed as a numeric literal 100.0
is parsed as:
00
– octal numeric literal 2.
– property accessor0
– identifier nameYour code throws syntax error because 0
is not a valid JavaScript identifier. The following example works since toString
is a valid identifier:
00.toString
1 Section 7.8.3 – Leading 0 can be followed by decimal separator or ExponentPart
2 Section B.1.1 – Leading 0 can be followed by OctalDigits