Elevación de JavaScript
Elevar es el comportamiento predeterminado de JavaScript de mover declaraciones a la parte superior.
Las declaraciones de JavaScript se elevan
En JavaScript, una variable se puede declarar después de que se haya utilizado.
En otras palabras; una variable se puede utilizar antes de que se haya declarado.
El ejemplo 1 da el mismo resultado que el ejemplo 2 :
Ejemplo 1
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
var x; // Declare x
Ejemplo 2
var x; // Declare x
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
Para entender esto, hay que entender el término "elevación".
Elevar es el comportamiento predeterminado de JavaScript de mover todas las declaraciones a la parte superior del alcance actual (a la parte superior del script actual o de la función actual).
Las palabras clave let y const
Las variables definidas con let
y const
se elevan a la parte superior del bloque, pero no se inicializan .
Significado: el bloque de código conoce la variable, pero no se puede usar hasta que se haya declarado.
El uso de una let
variable antes de declararla dará como resultado un archivo
ReferenceError
.
La variable está en una "zona muerta temporal" desde el inicio del bloque hasta que se declara:
Ejemplo
Esto dará como resultado unReferenceError
:
carName = "Volvo";
let carName;
Usar una const
variable antes de declararla es un error de sintaxis, por lo que el código simplemente no se ejecutará.
Ejemplo
Este código no se ejecutará.
carName = "Volvo";
const carName;
Lea más sobre let y const en JS Let/Const .
Las inicializaciones de JavaScript no se elevan
JavaScript solo levanta declaraciones, no inicializaciones.
El ejemplo 1 no da el mismo resultado que el ejemplo 2 :
Ejemplo 1
var x = 5; // Initialize x
var y = 7; // Initialize y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
Ejemplo 2
var x = 5; // Initialize x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
var y = 7; // Initialize y
¿Tiene sentido que y no esté definida en el último ejemplo?
Esto se debe a que solo la declaración (var y), no la inicialización (=7) se eleva a la parte superior.
Debido a la elevación, y se ha declarado antes de que se use, pero debido a que las inicializaciones no se elevan, el valor de y no está definido.
El ejemplo 2 es lo mismo que escribir:
Ejemplo
var x = 5; // Initialize x
var y; // Declare y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
y = 7; // Assign 7 to y
¡Declare sus variables en la parte superior!
La elevación es (para muchos desarrolladores) un comportamiento desconocido o pasado por alto de JavaScript.
Si un desarrollador no entiende el levantamiento, los programas pueden contener errores (bugs).
Para evitar errores, siempre declare todas las variables al comienzo de cada ámbito.
Dado que así es como JavaScript interpreta el código, siempre es una buena regla.
JavaScript en modo estricto no permite el uso de variables si no se declaran.
Estudie "uso estricto" en el próximo capítulo.