javascript - style - title css
¿Por qué 00.0 causa un error de sintaxis? (2)
Las expresiones
0.0
y
00.0
se
00.0
diferente.
-
0.0
se analiza como un literal numérico 1 -
00.0
se analiza como:-
00
- literal numérico octal 2 -
.
- acceso de propiedad -
0
- nombre del identificador
-
Su código arroja un error de sintaxis porque
0
no es un identificador de JavaScript válido.
El siguiente ejemplo funciona ya que
toString
es un identificador válido:
00.toString
1
Sección 7.8.3
: el 0 inicial puede ir seguido de un
separador decimal
o
una
Parte de
exponente
2
Sección B.1.1
- Los 0
iniciales
pueden ser seguidos por
OctalDigits
Esto es raro Esto es lo que sucede en la consola de JavaScript en Chrome (versión 42.0.2311.135, 64 bits).
> 0
< 0
> 00
< 0
> 0.0
< 0
> 00.0
X Uncaught > SyntaxError: Unexpected number
Firefox 37.0.2 hace lo mismo, aunque su mensaje de error es:
SyntaxError: missing ; before statement
Probablemente haya alguna explicación técnica con respecto a la forma en que JavaScript analiza los números, y tal vez solo pueda suceder al modificar el indicador de la consola, pero aún parece incorrecto.
¿Porque hace eso?
00
se evalúa como un número octal y
.0
se evalúa como el acceso a la propiedad de ese número.
Pero como no se permite el uso de enteros como accesores de propiedades, se genera el error.
Obtiene el mismo error para cualquier otro objeto:
''string''.0 // Syntax error: unexpected number
({}).0 // Syntax error: unexpected number
Puede encontrar información relacionada sobre MDN propiedades en MDN .