¿Por qué JavaScript eleva las variables?
¿Cuál fue la razón fundamental de los diseñadores cuando decidieron implementar la elevación? ¿Hay otros lenguajes populares que hagan esto?
Proporcione enlaces relevantes a documentación y / o registros.
javascript
hoisting
Xlaudio
fuente
fuente
div
en jQueryRespuestas:
Como explica Stoyan Stefanov en el libro "Patrones JavaScript", la elevación es el resultado de la implementación del intérprete JavaScript.
La interpretación del código JS se realizó en dos pasadas. Durante la primera pasada, el intérprete procesa declaraciones de función y variable.
El segundo paso es el paso de ejecución del código real. El intérprete procesa expresiones de función y variables no declaradas.
Por lo tanto, podemos utilizar el concepto de "elevación" para describir tal comportamiento.
fuente
El creador de JS Brendan Eich dijo una vez (en Twitter) :
También explicó que ...
¿Hay otros lenguajes populares que hagan esto?
No conozco otros lenguajes populares que eleven variables de la misma manera.Creo que incluso ActionScript, otra implementación de ECMAScript utilizada en el desarrollo de Flash, no implementó 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.ACTUALIZACIÓN: A partir de los comentarios, Python tiene un comportamiento de elevación de variables similar .
fuente
Esto se debe a que el intérprete de JavaScript interpreta el código en dos ciclos.
En el 1er ciclo, todas las declaraciones de variables y funciones se llevan a la parte superior del alcance de la función en el que se está ejecutando. Esto ayuda a crear
variableObjects
paraexecution context
función incluso antes de su ejecución.En la segunda fase, las asignaciones de valores, las declaraciones de código y las llamadas a funciones se llevan a cabo línea por línea de la manera esperada.
Tienes una lectura un poco más detallada aquí.
Se le dará una mejor imagen en todo alrededor de la conducta
let
,const
yclass
las declaraciones, también la precedencia se sigue entre variables y funciones.fuente