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.
Levage de Tous Déclarations
Toutes les déclarations JavaScript (var, let, const, function, function*, class) subissent un levage, ce qui signifie qu'elles sont reconnaissables n'importe où dans leur portée respective.
Différence d'initialisation
Cependant, la distinction entre les déclarations var/function/function* et let/const/class réside 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 dans 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.
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!