"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > En quoi « let » et « const » diffèrent-ils de « var » dans le levage JavaScript ?

En quoi « let » et « const » diffèrent-ils de « var » dans le levage JavaScript ?

Publié le 2024-12-21
Parcourir:588

How Do `let` and `const` Differ from `var` in JavaScript Hoisting?

Histage des variables déclarées avec let ou const

Alors que les variables déclarées avec var se comportent comme prévu lors du levage, celles déclarées avec let ou const présentent comportement différent.

Histing de toutes les déclarations

Toutes les déclarations JavaScript (var, let, const, function, function*, class) subissent un levage, ce qui signifie qu'ils sont reconnaissables n'importe où dans leur portée respective.

Différence d'initialisation

Cependant, la distinction entre var/ Les déclarations function/function* et let/const/class résident dans leur initialisation. Les déclarations Var sont initialisées avec undefined à partir du moment de la création de la liaison au début de la portée. En revanche, les déclarations let/const/class restent non initialisées jusqu'à ce que leur instruction soit évaluée.

Zone morte temporelle pour les variables non initialisées

Cet état non initialisé crée une « zone morte temporelle " où l'accès à la variable avant l'initialisation entraîne un ReferenceError.

Exemple :

x = y = "global";
(function() {
    x; // undefined
    y; // Reference error: y is not defined

    var x = "local";
    let y = "local";
}());

let vs. const in Hoisting

Let et const fonctionnent de manière identique en termes de levage. La différence entre elles est qu'une constante doit toujours se voir attribuer une valeur lors de sa déclaration.

Conclusion

Les variables déclarées avec let ou const sont hissées, mais elles restent non initialisées dans une zone morte temporelle jusqu'à ce que leur déclaration de déclaration soit traitée. Y accéder prématurément entraînera une ReferenceError.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3