Maison >interface Web >js tutoriel >Mystère du levage en JavaScript !
JavaScript regorge de bizarreries, et le levage fait partie de celles qui ont tendance à dérouter les nouveaux arrivants. Mais ne vous inquiétez pas à la fin de cet article, vous aurez une compréhension claire du levage, simplifié !
À la base, le levage est le comportement par défaut de JavaScript consistant à déplacer les déclarations vers le haut de leur portée. Cela ne signifie pas que le code est physiquement réorganisé, mais simplement la façon dont le moteur JavaScript l'interprète.
Pensez-y de cette façon : avant que JavaScript ne commence à exécuter votre code, il se "prépare" en allouant de la mémoire à toutes les variables et fonctions à l'avance, avant même qu'une seule ligne de code ne soit exécutée.
Seules les variables sont hissées.
?? Ce n'est pas vrai
Les déclarations de fonctions et les déclarations de variables sont levées.
Les variables hissées sont initialisées automatiquement.
?? Encore faux
Les variables sont hissées mais pas initialisées. Leur valeur reste indéfinie jusqu'à ce qu'elle soit explicitement attribuée.
1. Levage variable
Commençons par les variables déclarées à l'aide de var :
console.log(greeting); // Output: undefined var greeting = "Hello, World!";
Que se passe-t-il ici ? JavaScript traite le code comme ceci lors de l'exécution :
var greeting; // Declaration is hoisted console.log(greeting); // Accesses the variable before initialization greeting = "Hello, World!"; // Initialization happens here
Mais avec let et const, c'est une autre histoire :
console.log(name); // ReferenceError: Cannot access 'name' before initialization let name = "Sudhil";
Les variables déclarées avec let ou const sont levées, mais elles sont dans une "zone morte temporelle" (TDZ) jusqu'à ce que leur déclaration soit rencontrée.
2. Fonction de levage
Les déclarations de fonctions sont entièrement hissées, leur nom et leur corps sont disponibles avant la ligne de déclaration :
sayHello(); // Output: "Hello!" function sayHello() { console.log("Hello!"); }
Cependant, les expressions de fonction se comportent différemment :
sayHi(); // TypeError: sayHi is not a function var sayHi = function () { console.log("Hi!"); };
Dans ce cas, la variable sayHi est hissée mais n'est initialisée que lorsque l'affectation est atteinte.
3. Levage de classe
Les classes se comportent de la même manière pour let et const. Ils sont hissés mais ne sont pas accessibles avant leur déclaration.
const instance = new MyClass(); // ReferenceError: Cannot access 'MyClass' before initialization class MyClass { constructor() { this.name = "Classy!"; } }
1. Prédire le comportement
Comprendre le levage vous aide à prédire comment votre code s'exécutera et à éviter les pièges courants comme l'utilisation de variables avant leur initialisation.
2. Code propre
Pour éviter toute confusion, déclarez les variables et les fonctions en haut de leur portée. Cela correspond au comportement de levage de JavaScript et rend votre code plus lisible.
Voici ce qu'il faut retenir à propos du levage : ?
Merci d'avoir lu ! ?
Continuez à expérimenter les bizarreries de JavaScript et restez à l'écoute pour en savoir plus sur cette série.?
Bon codage ! ????✨
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!