Maison > interface Web > js tutoriel > En quoi le levage, la zone morte temporelle et l'initialisation diffèrent-ils entre « var », « let » et « const » en JavaScript ?

En quoi le levage, la zone morte temporelle et l'initialisation diffèrent-ils entre « var », « let » et « const » en JavaScript ?

Patricia Arquette
Libérer: 2024-12-31 07:08:09
original
862 Les gens l'ont consulté

How Do Hoisting, the Temporal Dead Zone, and Initialization Differ Between `var`, `let`, and `const` in JavaScript?

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";
});
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal