Heim >Web-Frontend >Front-End-Fragen und Antworten >Welche Bereiche wurden in es6 eingeführt?
„Bereich auf Blockebene“ wurde in es6 eingeführt; in es5 gibt es nur einen globalen Bereich und einen Funktionsbereich. In es6 ist der durch ein Paar geschweifter Klammern gebildete Bereich der Bereich auf Blockebene und der Bereich auf Blockebene explizit erlaubt Beim Deklarieren einer Funktion in einem Block verhält sich die Funktionsdeklarationsanweisung wie let und kann nicht außerhalb des Bereichs auf Blockebene referenziert werden.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, ECMAScript Version 6.0, Dell G3-Computer.
ES6 führte den Bereich auf Blockebene ein und ermöglichte explizit die Deklaration von Funktionen im Bereich auf Blockebene. ES6 legt fest, dass sich Funktionsdeklarationsanweisungen im Bereich auf Blockebene wie let verhalten und nicht außerhalb des Bereichs auf Blockebene referenziert werden können.
Im ES6-Standard ist der durch ein Paar geschweifter Klammern gebildete Bereich der Bereich auf Blockebene.
ES5 legt fest, dass Funktionen nur im Bereich der obersten Ebene und im Funktionsbereich deklariert werden können und nicht im Bereich der Blockebene.
ES5 hat nur einen globalen Umfang und einen Funktionsumfang, aber keinen Umfang auf Blockebene, was viele unangemessene Szenarien mit sich bringt.
(1) Innere Variablen können äußere Variablen überschreiben.
var tmp = new Date(); function f() { console.log(tmp); if (false) { var tmp = 'hello world'; } } f();//undefined
(2) Die zum Zählen verwendete Schleifenvariable wird als globale Variable durchgesickert
var s = 'hello'; for (var i = 0; i < s.length; i++) { console.log(s[i]);//h e l l o } console.log(i);//5
Die Variable i wird nur zur Steuerung der Schleife verwendet, aber nach dem Ende der Schleife verschwindet sie nicht und wird in eine globale Variable durchgesickert.
Beispiele sind wie folgt:
// 浏览器的 ES6 环境 function f() { console.log('I am outside!'); } (function () { if (false) { // 重复声明一次函数f function f() { console.log('I am inside!'); } } f(); }()); // Uncaught TypeError: f is not a function
Wenn im ES6-Standard eine Funktion in einem Bereich auf Blockebene deklariert wird, wird die Funktionsdeklaration als eine von var deklarierte Variable behandelt und an die Spitze des Bereichs auf Blockebene befördert , und die Funktion wird nur als Variablenname deklariert und deklariert nicht den Funktionskörper. Der obige Code entspricht:
// 浏览器的 ES6 环境 function f() { console.log('I am outside!'); } (function () { var f = undefined; if (false) { function f() { console.log('I am inside!'); } } f(); }()); // Uncaught TypeError: f is not a function
[Verwandte Empfehlungen: Javascript-Video-Tutorial, Web-Frontend]
Das obige ist der detaillierte Inhalt vonWelche Bereiche wurden in es6 eingeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!