Dans ce didacticiel, vous découvrirez le levage JavaScript à l'aide d'exemples.
Le levage en JavaScript est un comportement dans lequel une fonction ou une variable peut être utilisée avant la déclaration. Par exemple,
// using test before declaring console.log(test); // undefined var test;
Le programme ci-dessus fonctionne et la sortie ne sera pas définie. Le programme ci-dessus se comporte comme
// using test before declaring var test; console.log(test); // undefined
La variable test étant uniquement déclarée et n'ayant aucune valeur, une undefined
valeur lui est affectée.
Si vous souhaitez en savoir plus sur les variables, consultez Variables JavaScript.
Remarque : lors du levage, bien qu'il semble que la déclaration ait été déplacée vers le haut dans le programme, la chose réelle qui se produit est que les déclarations de fonction et de variable sont ajoutées à la mémoire pendant la phase de compilation.
Levage variable
En termes de variables et de constantes, le mot var
- clé est levé let
et const
ne permet pas le levage.
Par exemple,
// program to display value a = 5; console.log(a); var a; // 5
Dans l'exemple ci-dessus, la variable a est utilisée avant de la déclarer. Et le programme fonctionne et affiche la sortie 5. Le programme se comporte comme:
// program to display value var a; a = 5; console.log(a); // 5
Cependant en JavaScript, les initialisations ne sont pas hissées. Par exemple,
// program to display value console.log(a); var a = 5;
Production
indéfini
Le programme ci-dessus se comporte comme:
var a; console.log(a); a = 5;
Seule la déclaration est déplacée vers la mémoire lors de la phase de compilation. Par conséquent, la valeur de la variable a est undefined
due au fait que a est imprimé sans l'initialiser.
De plus, lorsque la variable est utilisée à l'intérieur de la fonction, la variable est hissée uniquement en haut de la fonction. Par exemple,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Production
hello Uncaught ReferenceError: b n'est pas défini
Dans l'exemple ci-dessus, la variable b est hissée au sommet de la fonction greet
et devient une variable locale. Donc b n'est accessible qu'à l'intérieur de la fonction. b ne devient pas une variable globale.
Pour en savoir plus sur les variables locales et globales, consultez Portée de la variable JavaScript.
Remarque : En levage, la déclaration de variable n'est accessible qu'au périmètre immédiat.
Si une variable est utilisée avec le let
mot - clé, cette variable n'est pas hissée. Par exemple,
// program to display value a = 5; console.log(a); let a; // error
Production
Uncaught ReferenceError: Impossible d'accéder à «a» avant l'initialisation
Lors de l'utilisation let
, la variable doit être déclarée en premier.
Fonction de levage
Une fonction peut être appelée avant de la déclarer. Par exemple,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Production
Salut
Dans le programme ci-dessus, la fonction greet
est appelée avant de la déclarer et le programme affiche la sortie. Cela est dû au levage.
Cependant, lorsqu'une fonction est utilisée comme expression , une erreur se produit car seules les déclarations sont hissées. Par exemple;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Production
Erreur de référence non interceptée: le message d'accueil n'est pas défini
Si var
était utilisé dans le programme ci-dessus, l'erreur serait:
Uncaught TypeError: saluer n'est pas une fonction
Remarque : En règle générale, le levage n'est pas effectué dans d'autres langages de programmation tels que Python, C, C ++, Java.
Le levage peut entraîner des résultats indésirables dans votre programme. Et il est préférable de déclarer les variables et les fonctions avant de les utiliser et d'éviter le levage.
Dans le cas des variables, il vaut mieux utiliser let
que var
.