Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung des Vergleichs und der Verwendung der neuen Befehle const, let und var in JavaScript

伊谢尔伦
Freigeben: 2017-07-22 11:37:49
Original
2022 Leute haben es durchsucht

const- und let-Befehle zum Deklarieren von Variablen hinzugefügt.

声明方式 变量提升 作用域 初始值 重复定义
const 块级 需要 不允许
let 块级 不需要 不允许
var 函数级 不需要 允许

Variablenförderung: const und let müssen vor der Verwendung deklariert werden


console.log(c1, l1, v1);
// 报错
// Uncaught ReferenceError: c1 is not defined
 
const c1 = 'c1';
let l1 = 'l1';
var v1 = 'v1';
Nach dem Login kopieren

Bereich: const, let unterstützt den Bereich auf Blockebene und vermeidet effektiv die variable Abdeckung


const c21 = 'c21';
let l21 = 'l21';
var v21 = 'v21';
 
if (0.1 + 0.2 != 0.3) {
 const c21 = 'c22';
 let l21 = 'l22';
 var v21 = 'v22';
 
 console.log(c21, l21, v21);
 // 输出 c22 l22 v22
}
 
console.log(c21, l21, v21);
// 输出 c21 l21 v22
Nach dem Login kopieren

Bereich auf Blockebene, was nicht möglich ist Wird in der äußeren Ebene verwendet. Greifen Sie direkt auf innere Variablen zu.


if (0.1 + 0.2 != 0.3) {
 const c22 = 'c22';
 let l22 = 'l22';
 var v22 = 'v22';
 
 console.log(c22, l22, v22);
 // 输出 c22 l22 v22
}
 
console.log(c22, l22, v22);
// 报错
// Uncaught ReferenceError: c22 is not defined
// 同样地, l22 is not defined
Nach dem Login kopieren

const definiert eine Konstante. Der Konstante kann kein Wert zugewiesen werden, den Eigenschaften der Konstante kann jedoch ein Wert zugewiesen werden


const c231 = {};
const c232 = [];
 
c231.name = 'seven';
c232.push(27);
 
console.log(c231, c232);
// 输出 {name: "seven"} [27]
 
// 禁止给对象赋值,应该使用 Object.freeze
 
const c233 = Object.freeze({});
const c234 = Object.freeze([]);
 
c233.name = 'seven';
// 普通模式下不报错
// 严格模式下报错
// Uncaught TypeError: Cannot add property name, object is not extensible
  
c234.push(27);
// 普通模式下就会报错
// Uncaught TypeError: Cannot add property 0, object is not extensible
 
console.log(c233, c234);
// 输出 {} []
Nach dem Login kopieren

Globale Variablen werden nicht mehr als Attribute des Objekts der obersten Ebene (Fenster) festgelegt, wodurch eine globale Variablenverschmutzung effektiv vermieden wird


const c24 = 'c24';
let l24 = 'l24';
 
console.log(c24, l24);
// 输出 c24 l24
 
console.log(window.c24, window.l24);
// 输出 undefined undefined
Nach dem Login kopieren

Entspricht der erwarteten for-Schleife


for (var i = 0; i != 3; i++) {
 setTimeout(function() {
  console.log(i);
 },10);
}
// 依次打印

for (let i = 0; i != 3; i++) {
 setTimeout(function() {
  console.log(i);
 },10);
}
// 依次打印,为啥呢
Nach dem Login kopieren

Sie können das sehen, indem Sie die let-Methode in der for-Schleife verwenden, um Variablen zu deklarieren entspricht den Erwartungen.

Jedes Mal in der for-Schleife deklariert let die Variable neu, und da sich die JavaScript-Engine den Wert der letzten Schleife merkt, wird die Initialisierung von i basierend auf der vorherigen Runde berechnet.

Sie können sehen, dass es in der for-Schleife mindestens zwei Gültigkeitsebenen gibt. Dies ist einfacher zu verstehen, wenn Sie sich das folgende Beispiel ansehen.


for (let i = 0; i != 3; i++) {
 let i = 'seven';
 console.log(i);
}
console.log('eight');
// 依次打印
seven
seven
seven
eight
Nach dem Login kopieren

Anfangswert: const Die deklarierte Variable muss einen Anfangswert haben und kann nicht wiederholt zugewiesen werden.


const c3 = 'c3';
let l3 = 'l3';
var v3 = 'v3';
 
console.log(c3, l3, v3);
// 输出 c3 l3 v3
 
c3 = 2; // Uncaught TypeError: Assignment to constant variable
l3 = 2;
v3 = 2;
 
console.log(c3, l3, v3);
// 输出 c3 2 2
 
const c32;
// 报错
// Uncaught SyntaxError: Missing initializer in const declaration
Nach dem Login kopieren

Doppelte Definition: const und let unterstützen keine wiederholte Definition

const und let reduzieren den Variablenbereich und vermeiden perfekt die Verschmutzung von const Feste Variablen (d. h. feste Variablentypen) können die Leistung von schwach typisiertem JavaScript erheblich verbessern. Es wird empfohlen, const und let zu verwenden, um Variablen in der Anwendung zu deklarieren.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Vergleichs und der Verwendung der neuen Befehle const, let und var in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!