Dans ES6, les variables déclarées avec let ou const semblent présenter un comportement de levage incohérent par rapport à var.
Tout d'abord, il est important de clarifier que toutes les déclarations en JavaScript sont levées, y compris celles utilisant let, const, var, function, function* et class. Cela signifie que toutes ces déclarations sont visibles dans toute la portée dans laquelle elles sont définies.
La distinction clé ne réside pas dans le levage mais dans l'initialisation des variables let et const.
Cet écart temporel entre la déclaration et l'initialisation crée une idée fausse sur levage.
Pour les variables let et const, la période entre la déclaration et l'initialisation est connue sous le nom de zone morte temporelle. Pendant ce temps, l'accès à la variable entraîne une ReferenceError.
x = y = "global"; (function() { console.log(x); // undefined console.log(y); // Reference error: y is not defined var x = "local"; let y = "local"; }());
Dans cet exemple, les variables var et let x et y sont déclarées en haut de la portée de la fonction. Cependant, la variable let y n'est initialisée que plus tard, créant une zone morte temporelle où l'accès à y génère une erreur.
Bien que toutes les déclarations en JavaScript soient levées, les variables let et const présentent un comportement d'initialisation différent. Ce comportement donne l'impression de "ne pas être hissé" mais est en fait dû à la zone morte temporelle créée par l'initialisation tardive. Les variables let et const fonctionnent de la même manière en termes de levage.
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!