English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base JavaScript

Objet JavaScript

Fonction JavaScript

JS HTML DOM

BOM du navigateur JS

Tutoriel de base AJAX

Manuel de référence JavaScript

Hoisting JavaScript

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).

Elevation des fonctions (Hoisting)

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

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.

Initialisation non élevée JavaScript

JavaScript élève uniquement les déclarations, mais pas les initialisations.

Les deux exemples suivants produisent des résultats différents :

Exemple1:
var x = 1;   // Initialisation de x
var y = 2;   // Initialisation de y
document.write(x + " " + y); // 1 2
Testez pour voir‹/›
Exemple2:
var x = 1;   // Initialisation de x
document.write(x + " " + y); // 1 undefined
var y = 2;   // Initialisation de y
Testez 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 y
Testez pour voir‹/›

Déclarez toujours les variables en haut

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.