Maison > interface Web > js tutoriel > Comprendre le levage en JavaScript

Comprendre le levage en JavaScript

WBOY
Libérer: 2024-07-27 07:02:02
original
458 Les gens l'ont consulté

Understanding Hoisting in JavaScript

Le levage est l'un des concepts fondamentaux de JavaScript qui déroute souvent les nouveaux développeurs. Cependant, une fois compris, cela peut grandement aider à écrire et déboguer du code JavaScript. Dans cet article, nous démystifierons le levage, expliquerons son fonctionnement et fournirons des exemples pour illustrer ses effets.

Qu’est-ce que le levage ?

En JavaScript, le levage est le comportement par lequel les déclarations de variables et de fonctions sont déplacées, ou « hissées », vers le haut de leur portée conteneur (soit la portée globale, soit la portée de la fonction) pendant la phase de compilation. Cela signifie que vous pouvez utiliser des variables et des fonctions avant qu'elles ne soient réellement déclarées dans le code.

Variables de levage

Commençons par le levage variable. Considérez le code suivant :

console.log(myVar); // Output: undefined
var myVar = 10;
console.log(myVar); // Output: 10
Copier après la connexion

Bien que la variable myVar soit utilisée avant sa déclaration, aucune erreur ne se produit. Au lieu de cela, undefined est enregistré sur la console. Cela se produit parce que la déclaration de myVar est hissée au sommet de sa portée, mais son affectation reste en place. Le code ci-dessus est interprété comme :

var myVar;
console.log(myVar); // Output: undefined
myVar = 10;
console.log(myVar); // Output: 10
Copier après la connexion

Fonctions de levage

Les déclarations de fonctions sont également levées. Prenons cet exemple :

greet(); // Output: Hello!

function greet() {
  console.log('Hello!');
}
Copier après la connexion

La fonction greet est appelée avant sa déclaration, pourtant elle fonctionne correctement. En effet, la déclaration de fonction est hissée au sommet de sa portée. Le code est interprété comme :

function greet() {
  console.log('Hello!');
}

greet(); // Output: Hello!
Copier après la connexion

Déclarations Let et Const

Avec l'introduction d'ES6, les mots-clés let et const fournissent des variables de portée bloc, qui ne sont pas hissées de la même manière que var. Cependant, leurs déclarations sont toujours hissées, mais ils restent dans une « zone morte temporelle » (TDZ) depuis le début du bloc jusqu'à ce que la déclaration soit rencontrée. Y accéder avant la déclaration entraîne une ReferenceError.

console.log(myLetVar); // ReferenceError: Cannot access 'myLetVar' before initialization
let myLetVar = 20;

console.log(myConstVar); // ReferenceError: Cannot access 'myConstVar' before initialization
const myConstVar = 30;
Copier après la connexion

Exemples pratiques

Exemple 1 : Levage variable avec var

function hoistExample() {
  console.log(message); // Output: undefined
  var message = 'Hoisting in JavaScript';
  console.log(message); // Output: Hoisting in JavaScript
}

hoistExample();
Copier après la connexion

Exemple 2 : Fonction de levage

hoistedFunction(); // Output: This function is hoisted!

function hoistedFunction() {
  console.log('This function is hoisted!');
}
Copier après la connexion

Exemple 3 : Zone morte temporelle avec let et const

function tdzExample() {
  console.log(tempVar); // ReferenceError: Cannot access 'tempVar' before initialization
  let tempVar = 'Temporal Dead Zone';
}

tdzExample();
Copier après la connexion

Conclusion

Le levage est un concept crucial à comprendre en JavaScript car il affecte les déclarations de variables et de fonctions. N'oubliez pas :

  • Les déclarations de variables (utilisant var) et les déclarations de fonctions sont hissées au sommet de leur portée.
  • Les initialisations des variables ne sont pas levées.
  • Les déclarations let et const sont levées mais restent dans une zone morte temporelle jusqu'à ce qu'elles soient initialisées.

En comprenant le levage, vous pouvez écrire un code plus prévisible et sans erreur. Gardez ce concept à l'esprit lorsque vous développez des applications JavaScript plus complexes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal