Unterschiede: 1. Mit var deklarierte Variablen gehören zum Funktionsbereich, während mit let und const deklarierte Variablen zum Gültigkeitsbereich auf Blockebene gehören. 2. Variablenförderung existiert in var, jedoch nicht in let und const wiederholt deklariert, aber im selben Bereich auf Blockebene können let-Variablen nicht erneut deklariert und const-Variablen nicht geändert werden.
Empfohlenes Tutorial: „JavaScript-Video-Tutorial“
Vor dem Aufkommen von ES6 (ES2015) bestand die einzige Möglichkeit, Variablen in JavaScript über das Schlüsselwort var zu deklarieren, und Funktionen über das Schlüsselwort function. Nach ES6 umfassen die Deklarationsmethoden var, let, const, function und class. In diesem Artikel werden hauptsächlich die Unterschiede zwischen var, let und const erläutert.
Var verstehen
Wenn Sie eine Variable mit dem Schlüsselwort var deklarieren, gehört die Variable zum aktuellen Funktionsbereich. Wenn es sich bei der Deklaration um eine Deklaration der obersten Ebene handelt, die außerhalb einer Funktion auftritt, gehört die Variable zum globalen Umfang. Beispiel:
var a = 1; //此处声明的变量a为全局变量 function foo(){ var a = 2;//此处声明的变量a为函数foo的局部变量 console.log(a);//2 } foo(); console.log(a);//1
Wenn Sie var beim Deklarieren einer Variablen weglassen, wird die Variable zu einer globalen Variablen. Wenn die Variable im globalen Bereich vorhanden ist, wird ihr Wert aktualisiert. Zum Beispiel:
var a = 1; //此处声明的变量a为全局变量 function foo(){ a = 2;//此处的变量a也是全局变量 console.log(a);//2 } foo(); console.log(a);//2
Hinweis: Mit var deklarierte Variablen unterliegen dem Hochziehen.
Verstehen Sie „Heben“
Heben bedeutet, dass unabhängig davon, wo var in einem Bereich erscheint, diese Deklaration zum gesamten aktuellen Bereich gehört und überall darauf zugegriffen werden kann. Beachten Sie, dass nur Variablendeklarationen gefördert werden, keine Zuweisungen zu Variablen. Wie im folgenden Beispiel gezeigt:
console.log(a);//undefined var a = 1;
Dieses Codesegment hat die gleiche Logik wie das folgende Codesegment:
var a; console.log(a);//undefined a = 1;
Und wenn Sie mit nicht deklarierten Variablen arbeiten, wird ein Fehler gemeldet
console.log(b);//假设b未声明过,Uncaught ReferenceError: b is not defined
Verstehen Sie die von let deklarierten Variablen
let hat die folgenden Eigenschaften:
Die von let deklarierten Variablen haben die Eigenschaften des Blockbereichs.
Im selben Bereich auf Blockebene können Variablen nicht wiederholt deklariert werden.
Es gibt keine Variablenheraufstufung für durch let deklarierte Variablen. Mit anderen Worten: Es gibt eine temporäre Totzone (TDZ) in der let-Deklaration.
Wie in den folgenden Beispielen gezeigt
let a = 1; console.log(a);//1 console.log(b);//Uncaught ReferenceError: b is not defined let b = 2;
function foo(){ let a = 1; let a = 2;//Uncaught SyntaxError: Identifier 'a' has already been declared }
Das Folgende ist ein klassisches Beispiel für var und let:
for (var i = 0; i < 10; i++) { setTimeout(function(){ console.log(i); },100) };
Nachdem der Code ausgeführt wurde, werden 10 10s auf der Konsole gedruckt, wenn er wie folgt geändert wird:
for (let i = 0; i < 10; i++) { setTimeout(function(){ console.log(i); },100) };
After Wenn der Code ausgeführt wird, werden 0-9 auf der Konsole gedruckt.
Verstehen Sie die const-Deklarationsmethode. Zusätzlich zu den oben genannten Eigenschaften von let gibt es auch eine Eigenschaft, nämlich die durch const definierten Variablen Sobald es definiert ist, kann es nicht mehr geändert werden, das heißt, die const-Deklaration ist eine Konstante.
Zum Beispiel:const a = 1; console.log(a);//1 a = 2; console.log(a);//Uncaught TypeError: Assignment to constant variable.
const obj = {a:1,b:2}; console.log(obj.a);//1 obj.a = 3; console.log(obj.a);//3
Zusammenfassung der Unterschiede
Von var deklarierte Variablen gehören zum Funktionsbereich, während von let und const deklarierte Variablen zum Blockebenenbereich gehören;
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen var, let und const in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!