English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans JavaScript, peu importe où elles sont définies, toutes les déclarations de variables et de fonctions sont déplacées ou élevées vers le sommet de leur portée actuelle. C'est le comportement par défaut de l'interpréteur JavaScript, appeléhoisting(élévation).
Les fonctions définies par déclaration de fonction sont automatiquement élevées.
Cela signifie que vous pouvez les appeler avant de les définir.
// Appel de la fonction avant la déclaration greet(); function greet() { document.getElementById("output").innerHTML = "Hello World"; }Testez pour voir‹/›
Comme vous le voyez, avant sa définition, nous avons appelégreet()fonction, mais le code reste valide. C'est parce que les déclarations de fonctions sont automatiquement élevées en arrière-plan.
L'élévation est le comportement par défaut de JavaScript qui déplace les déclarations vers le sommet.
JavaScript élève uniquement les déclarations, mais pas les initialisations. Si vous déclarez et initialisez une variable après son utilisation, cette valeur sera indéterminée.
document.write(num); // undefined var num; num = 50;Testez pour voir‹/›
Si vous déclarez une variable après son utilisation, mais que vous avez préalablement initialisée, elle retournera cette valeur :
num = 50; document.write(num); // 50 var num;Testez pour voir‹/›
UtilisezletouconstVariables et constantes non déclarées.
JavaScript élève uniquement les déclarations, mais pas les initialisations.
Les deux exemples suivants produisent des résultats différents :
var x = 1; // Initialisation de x var y = 2; // Initialisation de y document.write(x + " " + y); // 1 2Testez pour voir‹/›
var x = 1; // Initialisation de x document.write(x + " " + y); // 1 undefined var y = 2; // Initialisation de yTestez pour voir‹/›
dansExemple2dansNe montez que la déclaration (var y) et non l'initialisation (= 2)est élevé en haut.
Grâce à l'élévation, y a été déclarée avant son utilisation, mais en raison de l'initialisation non élevée, la valeur de y n'est pas définie.
L'exemple suivant est compris implicitement :
var x; // Déclaration de x var y; // Déclaration de y // Fin de l'élévation. x = 1; // Initialisation de x document.write(x + " " + y); // 1 undefined y = 2; // Initialisation de yTestez pour voir‹/›
L'élévation (Hoisting) est un comportement inconnu ou ignoré de JavaScript.
Si vous ne comprenez pas l'élévation (Hoisting), le programme peut contenir des erreurs.
Pour éviter les erreurs, déclarez toujours toutes les variables au début de chaque portée.
Attention :Sous le mode strict, JavaScript ne permet pas l'utilisation des variables non déclarées.
Vous en saurez plus sur "use strict" au prochain chapitre.