grammaire
Soit variable1 = valeur1
paramètre
variable1
Le nom de la variable à déclarer.
valeur 1
La valeur initiale attribuée à la variable.
Remarque
Utilisez une instruction LET pour déclarer une variable dont la portée est limitée au bloc qui le déclare. Vous pouvez attribuer des valeurs aux variables lors de la déclaration des variables, ou vous pouvez attribuer des valeurs à des variables plus tard dans le script.
Les variables déclarées à l'aide de LET ne peuvent pas être utilisées avant la déclaration, sinon une erreur sera causée.
Si votre variable n'est pas initialisée dans l'instruction LET, il se verra automatiquement attribuer une valeur JavaScript non définie.
Exemple:
var l = 10; {Soit l = 2; // À ce stade, l = 2.} // À ce stade, l = 10.// des moyens supplémentaires de déclarer une variable en utilisant le let.let index; let name = "Thomas Jefferson"; let réponse = 42, compteur, numpages = 10; let myArray = new Array ();Portée au niveau du bloc
pour (var i = 0; i <10; i ++) {} console.log (i); // 10for (Soit j = 0; j <10; j ++) {} console.log (j); // "ReferenceError: J n'est pas définiAucune promotion variable
console.log (a); // Sortie UndefinedConsole.log (B); // Error ReferenceErrorConsole.log (C); // Error ReferenceErrorvar a = 2; Soit B = 2;
Faites attention à la différence entre une pertinence et une référence
Zone morte temporaire (TDZ)
Tant que vous entrez dans la portée actuelle au niveau du bloc, les variables utilisées existent déjà, mais ce sont des zones mortes avant la déclaration et ne peuvent pas être utilisées.
Remarque: le typeof n'est plus une opération à 100% sûre
typeof x; // ReferenceErrorTyPof y // Undefinedlet x;
Les déclarations répétées ne sont pas autorisées
Soit x = 1; Soit x; // "Syntaxerror: l'identifiant 'x' a déjà été déclarévar y = 2; var y = 3; // y = 3
Portée au niveau du bloc
// Fonction Anonyme Writing (function () {var tmp = ...; ...} ()); // Block-Level Scope Writing {Soit Tmp = ...; ...}Le mode strict d'ES5 stipule que les fonctions ne peuvent être déclarées que dans la portée et la fonction de niveau supérieur, et les déclarations dans d'autres situations (comme si les blocs de code, les blocs de code de boucle) signalent les erreurs.
// es5'use strict '; if (true) {fonction f () {} // signaler une erreur}Étant donné que ES6 introduit une portée au niveau du bloc, cette situation peut être comprise comme une fonction déclarée dans une portée au niveau du bloc, donc aucune erreur n'est signalée, mais les accolades qui composent le bloc ne peuvent pas être manquantes.
// Signaler une erreur «Utiliser Strict»; if (true) Fonction f () {}La variable globale déclarée n'est plus une propriété de fenêtre
"Utiliser Strict"; var a = 1; console.log (Window.A) // 1let b = 1; console.log (Window.B) // Undefined