Gern benutzt, doch selten verstanden: Wozu brauchen wir let – können wir nicht einfach alles in ein var speichern? Najaaaa, es kommt drauf an!
let ermöglicht die Deklaration von Variablen, die auf den Geltungsbereich einer Blockanweisung oder eines Ausdrucks, in dem sie verwendet wird, beschränkt sind, im Gegensatz zum Schlüsselwort var, mit dem eine Variable global oder lokal für eine ganze Funktion unabhängig vom Geltungsbereich des Blocks deklariert wird.
Ein weiterer Unterschied zwischen var und let besteht darin, dass auf letztere erst dann zugegriffen werden kann, wenn ihre Deklaration erreicht ist (siehe zeitliche Totzone). Aus diesem Grund werden let-Deklarationen gemeinhin als nicht-hoisted betrachtet.
Genau wie const erzeugt let keine Eigenschaften des Fensterobjekts, wenn es global (im obersten Scope) deklariert wird.
Viele Probleme mit let-Variablen können vermieden werden, indem sie am Anfang des Bereichs deklariert werden, in dem sie verwendet werden (dies kann die Lesbarkeit beeinträchtigen).
Im Gegensatz zu var beginnt let mit Deklarationen, nicht mit Anweisungen. Das bedeutet, dass Sie eine einzelne let-Deklaration nicht als Körper eines Blocks verwenden können (was sinnvoll ist, da es keine Möglichkeit gibt, auf die Variable zuzugreifen).
Unten sehen wir zwei kleine Beispiele, die auf die Unterschiede hinweise.
// program to print text
// variable a cannot be used here
function greet() {
// variable a can be used here
var a = 'hello';
console.log(a);
}
// variable a cannot be used here
greet(); // hello
// program to print the text
// variable a cannot be used here
function greet() {
let a = 'hello';
// variable b cannot be used here
if(a == 'hello'){
// variable b can be used here
let b = 'world';
console.log(a + ' ' + b);
}
// variable b cannot be used here
console.log(a + ' ' + b); // error
}
// variable a cannot be used here
greet();