Levage de variables avec Let et Const
Bien qu'il soit vrai que les variables déclarées avec var sont levées, le comportement des variables déclarées avec let et const à cet égard, cela peut prêter à confusion. Pour résoudre cette confusion, décomposons ce qui se passe.
Levage : un concept universel en JavaScript
Toutes déclarations de variables en JavaScript, y compris var , let, const, fonctions et déclarations de classe sont hissés. Essentiellement, l'identifiant est rendu disponible dans la portée dans laquelle il est déclaré.
x = "global"; (function() { x; // not "global" { x; // not "global" let y; // not initialized } var x = "local"; let y = "local"; });
Dans cet exemple, toutes les déclarations de variables sont hissées dans leurs portées respectives (fonction et bloc).
Zone morte temporelle : une exception pour Let et Const
La distinction entre les déclarations var et les déclarations let/const réside dans le initialisation. var et d'autres déclarations de style ancien sont initialisées avec undefined ou l'objet fonction lorsque la liaison est créée en haut de la portée. En revanche, les déclarations let et const restent non initialisées jusqu'à ce que l'instruction soit exécutée.
Cela crée ce que l'on appelle la zone morte temporelle - une période entre la création de la variable et son initialisation. Tenter d'accéder à la variable dans cette zone entraîne une exception ReferenceError.
x = y = "global"; (function() { x; // undefined y; // ReferenceError: y is not defined var x = "local"; let y = "local"; }); // Block where temporal dead zone applies
Aucune différence entre Let et Const dans Hoisting
Les déclarations let et const suivent la même comportement de levage. La seule différence est que les variables const doivent être initialisées au moment de la déclaration et ne peuvent pas être réaffectées ultérieurement.
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!