Heim  >  Artikel  >  Web-Frontend  >  Welche Bereiche wurden in es6 eingeführt?

Welche Bereiche wurden in es6 eingeführt?

WBOY
WBOYOriginal
2022-05-05 15:44:221667Durchsuche

„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.

Welche Bereiche wurden in es6 eingeführt?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, ECMAScript Version 6.0, Dell G3-Computer.

Welcher Bereich wurde in es6 eingeführt?

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(&#39;I am outside!&#39;); }
(function () {
  if (false) {
    // 重复声明一次函数f
    function f() { console.log(&#39;I am inside!&#39;); }
  }
  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(&#39;I am outside!&#39;); }
(function () {
  var f = undefined;
  if (false) {
    function f() { console.log(&#39;I am inside!&#39;); }
  }
  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!

Stellungnahme:
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