Grammatik
Sei Variable1 = value1
Parameter
Variable1
Der Name der zu deklarierenden Variablen.
Wert1
Der anfängliche Wert der Variablen.
Bemerkung
Verwenden Sie eine LET -Anweisung, um eine Variable zu deklarieren, deren Umfang auf den Block beschränkt ist, der sie deklariert. Sie können Variablen, die Variablen deklarieren, Werte zuweisen, oder Sie können Variablen später im Skript Werte zuweisen.
Variablen, die mit LET deklariert sind, können nicht vor der Deklaration verwendet werden, andernfalls wird ein Fehler verursacht.
Wenn Ihre Variable in der LET -Anweisung nicht initialisiert wird, wird sie automatisch ein undefinierter JavaScript -Wert zugewiesen.
Beispiel:
var l = 10; {lass l = 2; // an diesem Punkt l = 2.} // an diesem Punkt l = 10.// Zusätzliche Möglichkeiten, eine Variable mit LET.Let -Index; let name = "thomas jefferson"; let Answer = 42, counter, numpages = 10; let myarray = new Array ();Umfang auf Blockebene
für (var i = 0; i <10; i ++) {} console.log (i); // 10for (lass j = 0; j <10; j ++) {} console.log (j); // "ReferenceError: J ist nicht definiertKeine variable Werbung
console.log (a); // outfinedConsole.log (b) ausgeben; // Fehler referenceErrorConsole.log (c); // Fehler referenceErrorvar a = 2; sei b = 2;
Achten Sie auf den Unterschied zwischen undefinierter und ReferenzError
Temporäre Totenzone (TDZ)
Solange Sie den aktuellen Umfang auf Blockebene betreten, existieren die verwendeten Variablen, aber sie sind vor der Erklärung tote Zonen und können nicht betrieben werden.
Hinweis: Typof ist kein 100% sicherer Betrieb mehr
typeof x; // referenceerrortype von y // undefinedlet x;
Wiederholte Aussagen sind nicht erlaubt
sei x = 1; sei x; // "syntaxError: identifier 'x' wurde bereits deklariert y = 2; var y = 3; // y = 3
Umfang auf Blockebene
// Anonymous Function Writing (function () {var tmp = ...; ...} ()); // Block-Level Scope Writing {let tmp = ...; ...}Der strikte Modus von ES5 sieht vor, dass Funktionen nur in den Umfang und die Funktion von oberen Ebenen deklariert werden können, und Deklarationen in anderen Situationen (z. B. wenn Codeblöcke, Schleifencodeblöcke) Fehler melden.
// es5'use strict '; if (true) {function f () {} // einen Fehler melden}Da ES6 einen Umfang auf Blockebene einführt, kann diese Situation als eine Funktion verstanden werden, die innerhalb eines Umfangs auf Blockebene deklariert wird, sodass kein Fehler gemeldet wird, aber die Zahnspangen, aus denen der Block besteht, können nicht fehlen.
// einen Fehler 'Strict'; if (true) Funktion f () {} meldenDie deklarierte globale Variable ist keine Eigenschaft des Fensters mehr
"Strict"; var a = 1; console.log (window.a) // 1let b = 1; console.log (window.b) // undefiniert