Heim > php教程 > PHP开发 > Eine ausführliche Erklärung der ES6-Befehle let und const

Eine ausführliche Erklärung der ES6-Befehle let und const

高洛峰
Freigeben: 2016-12-29 13:20:21
Original
1220 Leute haben es durchsucht

Mit let und const deklarierte Variablen sind nur innerhalb des Codeblocks gültig

{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
Nach dem Login kopieren

Es gibt keine Variablenförderung

Die Variable muss nach der Deklaration in Gebrauch sein, sonst wird ein Fehler gemeldet

var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
Nach dem Login kopieren

Wiederholte Deklarationen sind nicht zulässig

// 报错
function () {
let a = 10;
var a = 1;
}
Nach dem Login kopieren

Bereich auf Blockebene

function f() { console.log('I am outside!'); }
(function () {
if(false) {
// 重复声明一次函数f
function f() { console.log('I am inside!'); }
}
f();
}());
//I am inside! ES5 函数提升
//I am outside! ES6 块级作用域
Nach dem Login kopieren

const-Befehl

deklariert eine schreibgeschützte Konstante. Nach der Deklaration kann der Wert der Konstante nicht geändert werden

Sobald eine Variable deklariert ist, muss sie sofort initialisiert werden und kann nicht für eine spätere Zuweisung zurückgelassen werden

Globale Variablen deklariert Durch den let-Befehl, den const-Befehl und den class-Befehl gehören sie nicht zu den globalen Objektattributen

var a = 1;
// 如果在Node的REPL环境,可以写成global.a
// 或者采用通用方法,写成this.a
window.a // 1
let b = 1;
window.b // undefined
Nach dem Login kopieren

Lassen Sie mich Ihnen den const-Befehl von ES6 vorstellen separat

Es gab immer keine Konstante in js mit Ecma als Kernkonzept, es6 gleicht diesen Fehler aus

const foo='foo';
foo='bar';//TypeError: Assignment to constant variable.
Nach dem Login kopieren

Das obige Beispiel deklariert eine Konstante eines Basistyps. Wenn es sich um einen Referenztypwert handelt, wird ein Fehler gemeldet. Es gibt jedoch Folgendes zu beachten:

const foo=[];  
foo=[1];//Assignment to constant variable.
Nach dem Login kopieren

const foo=[1,2,3];
foo[1]=4;
console.log(foo)//[1, 4, 3]
Nach dem Login kopieren

Warum wird hier kein Fehler gemeldet? Und kann die Änderung erfolgreich sein? Der Unterschied zwischen diesen beiden Beispielen besteht darin, dass ersteres den Zeiger geändert hat (Sie müssen mit den Referenztypen von js vertraut sein) und sich der entsprechende Inhalt geändert hat, während letzteres nicht auf dasselbe zeigt, sondern sich der Inhalt des Objekts geändert hat. Für foo, ich nur Ein Zeiger ist dafür verantwortlich, auf das entsprechende Objekt zu verweisen. Der Inhalt des Objekts spielt für mich keine Rolle. Wenn Sie also nicht möchten, dass sich der Inhalt ändert kann eine andere Methode verwenden;

Auf diese Weise müssen Sie sich keine Gedanken über Änderungen machen
const foo=Object.freeze([1,2,3]);
foo[1]=4;
console.log(foo)//[1, 2, 3]
Nach dem Login kopieren

Für weitere Einzelheiten Artikel zu let- und const-Befehlen in ES6 finden Sie auf der chinesischen PHP-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 Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage