Variablen, die mit dem Schlüsselwort var deklariert werden, beziehen sich auf die Funktion, in der sie erstellt werden, oder, wenn sie außerhalb einer Funktion erstellt werden, auf das globale Objekt. let und const haben einen Blockbereich, was bedeutet, dass sie nur innerhalb des nächstgelegenen Satzes geschweifter Klammern (Funktion, if-else-Block oder for-Schleife) zugänglich sind.
function foo() { // All variables are accessible within functions. var bar = 'bar'; let baz = 'baz'; const qux = 'qux'; console.log(bar); // bar console.log(baz); // baz console.log(qux); // qux } console.log(bar); // ReferenceError: bar is not defined console.log(baz); // ReferenceError: baz is not defined console.log(qux); // ReferenceError: qux is not defined if (true) { var bar = 'bar'; let baz = 'baz'; const qux = 'qux'; } // var declared variables are accessible anywhere in the function scope. console.log(bar); // bar // let and const defined variables are not accessible outside the block they were defined in. console.log(baz); // ReferenceError: baz is not defined console.log(qux); // ReferenceError: qux is not defined
var ermöglicht das Hochziehen von Variablen, was bedeutet, dass sie im Code referenziert werden können, bevor sie deklariert werden. let und const lassen dies nicht zu, sondern geben stattdessen einen Fehler aus.
console.log(foo); // undefined var foo = 'foo'; console.log(baz); // ReferenceError: can't access lexical declaration 'baz' before initialization let baz = 'baz'; console.log(bar); // ReferenceError: can't access lexical declaration 'bar' before initialization const bar = 'bar';
Das erneute Deklarieren einer Variablen mit var löst keinen Fehler aus, let und const hingegen schon.
var foo = 'foo'; var foo = 'bar'; console.log(foo); // "bar" let baz = 'baz'; let baz = 'qux'; // Uncaught SyntaxError: Identifier 'baz' has already been declared
let und const unterscheiden sich darin, dass let die Neuzuweisung des Variablenwerts zulässt, während const dies nicht tut.
// This is fine. let foo = 'foo'; foo = 'bar'; // This causes an exception. const baz = 'baz'; baz = 'qux';
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3