Elevación de declaraciones en JavaScript

En JavaScript, las declaraciones de funciones y variables se elevan hasta la parte superior de la función.

En JavaScript, las variables pueden declararse después de usarse, es decir, una variable puede usarse antes de declararse.

Los siguientes dos ejemplos obtendrán el mismo resultado:

Ejemplo 1

x = 5; // la variable x se establece en 5

elem = document.getElementById("demo"); // buscar el elemento
elem.innerHTML = x;                     // mostrar x en el elemento

var x; // declarar x

Pruébalo »

Ejemplo 2

var x; // declarar x
x = 5; // la variable x se establece en 5

elem = document.getElementById("demo"); // buscar el elemento
elem.innerHTML = x;                     // mostrar x en el elemento

Pruébalo »

Para entender los ejemplos anteriores, es necesario entender el "hoisting (elevación de declaraciones)".

Elevación de declaraciones: las declaraciones de funciones y variables siempre son "elevadas" silenciosamente por el intérprete a la parte superior del cuerpo del método.


La inicialización de JavaScript no se eleva

La inicialización de JavaScript no se eleva. En JavaScript, solo la parte de la declaración de variables se eleva; la parte de inicialización no.

Los resultados de los siguientes dos ejemplos no son iguales:

Ejemplo 1

var x = 5; // inicializar x
var y = 7; // inicializar y

elem = document.getElementById("demo"); // buscar el elemento
elem.innerHTML = x + " " + y;           // mostrar x e y

Pruébalo »

Ejemplo 2

var x = 5; // inicializar x

elem = document.getElementById("demo"); // buscar el elemento
elem.innerHTML = x + " " + y;           // mostrar x e y

var y = 7; // inicializar y

Pruébalo »

La y del ejemplo 2 mostróundefined, esto se debe a que la declaración de la variable (var y) se elevó, pero la inicialización (y = 7) no se eleva, por lo que la variable y es una variable indefinida.

El ejemplo 2 es similar al siguiente código:

var x = 5; // 初始化 x
var y;     // 声明 y

elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y;           // 显示 x 和 y

y = 7;    // 设置 y 为 7

Declara tus variables en la parte superior

La mayoría de los programadores no conocen la elevación de declaraciones de JavaScript.

Si los programadores no comprenden bien la elevación de declaraciones, los programas que escriban pueden presentar fácilmente algunos problemas.

Para evitar estos problemas, normalmente declaramos estas variables al comienzo de cada ámbito (scope), que también son los pasos normales de análisis de JavaScript y son fáciles de entender.

Note El modo estricto de JavaScript (strict mode) no permite el uso de variables no declaradas.
En el siguiente capítulo aprenderemos sobre"modo estricto (strict mode)" 。
Otras extensiones