Supongamos que escribo 0.5 como 0.-5 de forma inesperada, pero aún puede ejecutarse. ¿Qué hace 0. en 0.-5 para que aún pueda ejecutarse y se evalúe como -5?
También probé alert(0.-5+1) que imprime -4, ¿JavaScript ignora 0. en 0.-5 ?
Los dígitos finales después de un . son opcionales:
console.log(0. === 0); // trueAsi que
0.-5evalúa a
0 - 5 que es solo -5 . Similarmente,
0.-5+1es
0 - 5 + 1cual es
-5 + 1 o -4 .
0.-5 podría analizarse con éxito como 0. [1] , - y 5 . A continuación se muestra el árbol de sintaxis abstracta para la expresión generada por el explorador AST:

Esto (de una manera inesperada) es JavaScript válido y se evalúa como -5 .
[1] De acuerdo con la gramática de los literales numéricos , los dígitos decimales y las partes de los exponentes son opcionales:
Literal Numérico ::
DecimalLiteral
[...]LiteralDecimal ::
LiteralEnteroDecimal. Dígitos decimales opt Parte exponente opt
En JS puede expresar un número con un punto decimal opcional.
x = 5.; //5 x = 5. + 6. //11Y a partir del comentario de Tvde1, también se puede aplicar cualquier método numérico.
5..toString()Esta sintaxis nos permite ejecutar las funciones numéricas sin paréntesis.
5.toString() //error (5).toString() //good 5..toString() //good 5 .toString() // awesomeVea esta pregunta para saber por qué.