English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En JavaScript, independientemente de dónde se definan, todas las declaraciones de variables y funciones se mueven o elevan a la parte superior de su ámbito actual. Esto es el comportamiento predeterminado del intérprete de JavaScript, conocido comoelevamiento (hoisting).
Las funciones definidas con declaraciones de función se elevan automáticamente.
Esto significa que se pueden llamar a ellas antes de definirlas.
// Llamar a la función antes de declararla greet(); function greet() { document.getElementById("output").innerHTML = "Hello World"; }Prueba a ver‹/›
Como puede ver, hemos llamado agreet()función, pero el código sigue siendo válido. Esto se debe a que la declaración de la función se eleva automáticamente a la parte superior en el fondo.
El elevamiento es el comportamiento predeterminado de JavaScript que mueve las declaraciones al principio.
JavaScript solo eleva las declaraciones, no la inicialización. Si se declara e inicializa una variable después de usarla, el valor será incierto.
document.write(num); // undefined var num; num = 50;Prueba a ver‹/›
Si se declara una variable después de usarla, pero se inicializa previamente, devolverá este valor:
num = 50; document.write(num); // 50 var num;Prueba a ver‹/›
usarletoconstVariables y constantes no declaradas.
JavaScript solo ascende declaraciones, no inicializaciones.
Los siguientes dos ejemplos producen resultados diferentes:
var x = 1; // Inicializar y var y = 2; // Inicializar y document.write(x + " + y); // 1 2Prueba a ver‹/›
var x = 1; // Inicializar y document.write(x + " + y); // 1 undefined var y = 2; // Inicializar yPrueba a ver‹/›
enEjemplo2,Sólo se ascendió la declaración (var y) y no la inicialización (=) 2Ascendido a la parte superior.
Debido al ascenso, se declaró y antes de usarla, pero debido a que no se inicializó, el valor de y no está definido.
El ejemplo anterior se entiende implícitamente como:
var x; // Declarar y var y; // Declarar y // Finalización del ascenso. x = 1; // Inicializar y document.write(x + " + y); // 1 undefined y = 2; // Inicializar yPrueba a ver‹/›
El ascenso (Hoisting) es un comportamiento desconocido o ignorado de JavaScript.
Si no entiendes el ascenso (Hoisting), el programa puede contener errores.
Para evitar errores, declara siempre todas las variables al principio de cada ámbito.
Atención:Si no se declara una variable, JavaScript en modo estricto no permite el uso de variables.
Conocerás más sobre "use strict" en el próximo capítulo.