En este tutorial, aprenderá sobre la elevación de JavaScript con la ayuda de ejemplos.
La elevación en JavaScript es un comportamiento en el que una función o variable se puede utilizar antes de la declaración. Por ejemplo,
// using test before declaring console.log(test); // undefined var test;
El programa anterior funciona y la salida no estará definida. El programa anterior se comporta como
// using test before declaring var test; console.log(test); // undefined
Dado que la variable test solo se declara y no tiene valor, undefined
se le asigna un valor.
Si desea obtener más información sobre las variables, visite Variables de JavaScript.
Nota : En el levantamiento, aunque parece que la declaración se ha movido hacia arriba en el programa, lo que realmente sucede es que las declaraciones de función y variable se agregan a la memoria durante la fase de compilación.
Elevación variable
En términos de variables y constantes, la palabra clave var
es izado y let
y const
no permite izar.
Por ejemplo,
// program to display value a = 5; console.log(a); var a; // 5
En el ejemplo anterior, la variable a se usa antes de declararla. Y el programa funciona y muestra la salida 5. El programa se comporta como:
// program to display value var a; a = 5; console.log(a); // 5
Sin embargo, en JavaScript, las inicializaciones no se elevan. Por ejemplo,
// program to display value console.log(a); var a = 5;
Salida
indefinido
El programa anterior se comporta como:
var a; console.log(a); a = 5;
Solo la declaración se mueve a la memoria en la fase de compilación. Por tanto, el valor de la variable a se undefined
debe a que a se imprime sin inicializarla.
Además, cuando la variable se usa dentro de la función, la variable se eleva solo a la parte superior de la función. Por ejemplo,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Salida
hola Uncaught ReferenceError: b no está definido
En el ejemplo anterior, la variable b se eleva a la parte superior de la función greet
y se convierte en una variable local. Por tanto, b solo es accesible dentro de la función. b no se convierte en una variable global.
Para obtener más información sobre las variables locales y globales, visite Alcance variable de JavaScript.
Nota : En elevación, la declaración de variable solo es accesible para el alcance inmediato.
Si se usa una variable con la let
palabra clave, esa variable no se eleva. Por ejemplo,
// program to display value a = 5; console.log(a); let a; // error
Salida
Error de referencia no detectado: no se puede acceder a 'a' antes de la inicialización
Mientras se usa let
, la variable debe declararse primero.
Función de elevación
Se puede llamar a una función antes de declararla. Por ejemplo,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Salida
Hola
En el programa anterior, greet
se llama a la función antes de declararla y el programa muestra la salida. Esto se debe al izado.
Sin embargo, cuando se usa una función como expresión , se produce un error porque solo se levantan declaraciones. Por ejemplo;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Salida
Error de referencia no detectado: saludar no está definido
Si var
se utilizó en el programa anterior, el error sería:
Error de tipo no detectado: saludar no es una función
Nota : Generalmente, la elevación no se realiza en otros lenguajes de programación como Python, C, C ++, Java.
La elevación puede causar resultados no deseados en su programa. Y es mejor declarar variables y funciones primero antes de usarlas y evitar las elevaciones.
En el caso de las variables, es mejor utilizar let
que var
.