Der Unterschied zwischen var, let und const in JavaScripct

In ES5 gibt es nur zwei Formen der Variablendeklaration: var und function. Da die von var deklarierte Variable bestimmte Nachteile hat, schlägt ES6 die Verwendung von let und const vor, um Variablen zu deklarieren. Schauen wir uns den Unterschied zwischen ihnen an.

1. Gibt es eine variable Werbung?

Die von var deklarierte Variable hat eine Variablenheraufstufung (die Variable wird an die Spitze des aktuellen Bereichs heraufgestuft). Das heißt, die Variable kann vor der Deklaration aufgerufen werden, und der Wert ist undefiniert.

Für let und const gibt es keine variable Promotion. Das heißt, die von ihnen deklarierten Variablen müssen nach der Deklaration verwendet werden, andernfalls wird ReferenceError gemeldet.

console.log(f) //undefined
var f = 1 ;

console.log(g) //ReferenceError: g is not defined
let g = 2;

console.log(h) //ReferenceError: g is not defined
const h = 2;

2. Gibt es eine vorübergehende Totzone?

Lassen Sie und const eine temporäre Totzone haben. Das heißt, solange sich im Bereich auf Blockebene ein Befehl let befindet, ist die deklarierte Variable an diesen Bereich "gebunden" und wird von außen nicht mehr beeinflusst.

var tmp = 123;
if (true) {
    
    
  tmp = 'abc'; // ReferenceError
  let tmp;
}
//以上代码if后面{
    
    }形成了块级作用域,由于使用let声明了tmp,则这个变量就绑定了块区域,在声明之前使用,会报错。

在代码块内,使用let命令声明变量之前,该变量都是不可用的。Dies wird grammatikalisch als "zeitliche Totzone" (kurz TDZ) bezeichnet.
Kurz gesagt, das Wesentliche der temporären Totzone ist, dass die zu verwendende Variable bereits vorhanden ist, sobald sie in den aktuellen Bereich eintritt, aber nicht verfügbar ist. Nur wenn die Codezeile angezeigt wird, die die Variable deklariert, kann die Variable abgerufen und verwendet werden.

3. Darf man Variablen wiederholt deklarieren?

var ermöglicht die wiederholte Deklaration von Variablen.
Let und const dürfen Variablen nicht wiederholt im selben Bereich deklarieren.

var f = 4;
var f = 5;
console.log(5) //5

let g = 6;
let g = 7;
console.log(7) //SyntaxError: Identifier 'g' has already been declared

const h = 8;
const h = 9;
console.log(h) //SyntaxError: Identifier 'g' has already been declared

4. Gibt es einen Bereich auf Blockebene?

Es gibt keinen Bereich auf Blockebene für var.
Let und const haben einen Gültigkeitsbereich auf Blockebene.

Was ist ein Bereich auf Blockebene?

Die Bereiche in ES5 sind: globaler Bereich und Funktionsumfang. Es gibt kein Konzept für den Blockumfang. Daher gibt es auch eine Reihe von Problemen.

5. Können die deklarierten Variablen geändert werden?

Var und lass uns gut gehen.
const deklariert eine schreibgeschützte Konstante. Einmal deklariert, kann der Wert der Konstante nicht mehr geändert werden. Die von const deklarierte Variable darf den Wert nicht ändern. Dies bedeutet, dass sobald const die Variable deklariert, sie sofort initialisiert werden muss und nicht für eine spätere Zuweisung belassen werden kann.

Ich denke du magst

Origin blog.csdn.net/zxlong020/article/details/108435749
Empfohlen
Rangfolge