Maison > interface Web > js tutoriel > Zone morte temporelle (TDZ) et levage en JavaScript :

Zone morte temporelle (TDZ) et levage en JavaScript :

DDD
Libérer: 2024-09-18 17:39:06
original
512 Les gens l'ont consulté

Temporal Dead Zone (TDZ) and Hoisting in JavaScript:

Zone Morte Temporelle (TDZ) et Levage en JavaScript :

  1. Zone morte temporelle (TDZ) : la zone morte temporelle fait référence à la période de temps entre l'entrée dans la portée (comme un bloc ou une fonction) et la variable déclarée. Dans cette zone, toute tentative d'accès à la variable entraînera une ReferenceError. Le TDZ existe pour les variables déclarées à l'aide de let, const et class avant leur initialisation.

Exemple :

console.log(maVar); // non défini
console.log(myLet); // ReferenceError : Impossible d'accéder à 'myLet' avant l'initialisation

var maVar = 5;
laissez myLet = 10;

Dans l'exemple ci-dessus, myVar est déclaré à l'aide de var, il est donc hissé et initialisé à undefined. Mais myLet est dans la zone morte temporelle jusqu'à sa déclaration, donc essayer d'y accéder avant la déclaration renvoie une ReferenceError.

Points clés sur TDZ :

Les variables déclarées à l'aide de let ou const ne sont pas accessibles avant leur déclaration dans une portée de bloc, même si elles sont hissées.

Cela empêche l'utilisation de variables avant qu'elles ne soient explicitement initialisées.


  1. Levage : le levage fait référence au comportement en JavaScript où les déclarations de variables et de fonctions sont déplacées vers le haut de leur portée (soit la portée globale, soit la portée de la fonction/du bloc) pendant la phase de compilation. Cependant, seules les déclarations sont hissées, pas les initialisations.

Exemple :

console.log(maVar); // non défini
var maVar = 5;

Dans l'exemple ci-dessus, la déclaration de maVar est hissée en haut, mais son initialisation (maVar = 5) reste à l'endroit où elle a été écrite. Ainsi, lorsque console.log(myVar) est appelé avant l'initialisation, il renvoie undefined.

Levage de var, let, const et fonctions :

var : Les variables déclarées avec var sont hissées et initialisées avec undefined.

console.log(maVar); // non défini
var maVar = 10;

let et const : Les variables déclarées avec let et const sont hissées mais ne sont pas initialisées. Ils restent dans la TDZ jusqu'à leur initialisation.

console.log(myLet); //Erreur de référence
laissez myLet = 20;

Déclarations de fonctions : les déclarations de fonctions sont entièrement levées, ce qui signifie que vous pouvez appeler la fonction avant même le point où elle est déclarée dans le code.

myFunc(); // "Bonjour !"

fonction myFunc() {
console.log("Bonjour!");
>


Différences clés entre le levage et le TDZ :

Le levage élève les déclarations de variables et de fonctions au sommet de leur portée.

La zone morte temporelle se produit pour let, const et class, où les variables sont hissées mais ne sont pas accessibles tant qu'elles ne sont pas initialisées. Cela empêche d'accéder aux variables avant leur déclaration.

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:dev.to
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal