Búsqueda de sitios web

elevación - ¿Por qué JavaScript eleva las variables?


¿Por qué JavaScript eleva las variables?

¿Cuál fue la razón de los diseñadores cuando decidieron implementar el 'hoisting'? ¿Hay otros lenguajes populares que hagan esto?

Por favor, proporcione enlaces relevantes a la documentación y/o registros.

Respuesta #1

Como explica Stoyan Stefanov en el libro "JavaScript Patterns", el hoisting es resultado de la implementación del intérprete de JavaScript.

La interpretación del código JS se realiza en dos pasadas. Durante la primera pasada, el intérprete procesa las declaraciones de variables y funciones.

La segunda pasada es el paso de ejecución real del código. El intérprete procesa expresiones de funciones y variables no declaradas.

Así, podemos usar el concepto de "hoisting" para describir tal comportamiento.

Respuesta #2

El creador de JS, Brendan Eich, dijo una vez en X (la plataforma de redes sociales anteriormente conocida como Twitter)

"El 'hoisting' de variables fue así una consecuencia no deseada del 'hoisting' de funciones, la falta de alcance de bloque y JavaScript como un trabajo apresurado de 1995."

Él procedió con la explicación de que…

"el 'hoisting' de funciones permite la descomposición del programa de arriba hacia abajo, 'let rec' gratis, llamar antes de declarar; el 'hoisting' de var vino incluido."

¿Hay otros idiomas populares que hagan esto?

No conozco ningún otro lenguaje popular que eleve las variables de la misma manera. Creo que incluso ActionScript —otra implementación de ECMAScript utilizada en el desarrollo de Flash— no implementaba la elevación. Esto ha sido una fuente de confusión y frustración para los desarrolladores familiarizados con otros lenguajes que están aprendiendo JavaScript.

Artículos relacionados