JavaScript: ¿Por qué {} + [] es igual a cero?

·4m 25s

En este análisis técnico se explora por qué la expresión {} + [] en JavaScript devuelve 0, un resultado que suele generar confusión. Aunque a menudo se critica al lenguaje por este comportamiento, la realidad es que se trata de un malentendido sobre cómo el motor interpreta la sintaxis.

Puntos clave aclarados:

  • El rol del intérprete: Muchas de estas curiosidades dependen de cómo la consola de los navegadores (como Chrome) evalúa el código, lo cual difiere de cómo se ejecuta en un programa real.
  • Contexto sintáctico: Cuando escribimos {} seguido de [] al inicio de una línea, JavaScript no interpreta el par de llaves como un objeto vacío, sino como un Block Statement (una estructura de bloque), algo legal pero poco común en este contexto.
  • Operador unario: El signo + delante del array vacío es interpretado como un operador unario, que intenta convertir el array en un número, resultando en 0.

"Lo que está detectando aquí es un bloque statement, por eso para JavaScript esto no es un objeto."

Para profundizar en el análisis, se recomienda utilizar herramientas como AST Explorer, que permite visualizar el Abstract Syntax Tree (árbol de sintaxis abstracta). Esto nos ayuda a entender que el código no está intentando una concatenación, sino que está siendo analizado por su estructura gramatical de forma distinta a lo esperado por el programador.

Temas

JavaScript Programación AST Desarrollo Web Sintaxis

Capítulos

3 chapters