Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah skop yang diperkenalkan dalam es6

Apakah skop yang diperkenalkan dalam es6

WBOY
WBOYasal
2022-05-05 15:44:221723semak imbas

"Skop peringkat blok" telah diperkenalkan dalam es6 dalam es5, hanya terdapat skop global dan skop fungsi Dalam es6, skop yang dibentuk oleh sepasang kurungan kerinting ialah skop peringkat blok. adalah secara eksplisit dibenarkan untuk Apabila fungsi diisytiharkan dalam skop peringkat blok, pernyataan pengisytiharan fungsi berkelakuan seperti let dan tidak boleh dirujuk di luar skop peringkat blok.

Apakah skop yang diperkenalkan dalam es6

Persekitaran pengendalian tutorial ini: sistem Windows 10, ECMAScript versi 6.0, komputer Dell G3.

Apakah skop yang diperkenalkan dalam es6

ES6 memperkenalkan skop peringkat blok, yang secara eksplisit membenarkan fungsi diisytiharkan dalam skop peringkat blok. ES6 menetapkan bahawa dalam skop peringkat blok, pernyataan pengisytiharan fungsi berkelakuan seperti let dan tidak boleh dirujuk di luar skop peringkat blok.

Dalam piawai ES6, skop yang dibentuk oleh sepasang pendakap ialah skop peringkat blok.

ES5 menetapkan bahawa fungsi hanya boleh diisytiharkan dalam skop peringkat atas dan skop fungsi, dan tidak boleh diisytiharkan dalam skop peringkat blok.

ES5 hanya mempunyai skop global dan skop fungsi, tetapi tiada skop peringkat blok, yang membawa banyak senario yang tidak munasabah.

(1) Pembolehubah dalaman boleh mengatasi pembolehubah luar.

    var tmp = new Date();
    function f() {
        console.log(tmp);
        if (false) {
            var tmp = 'hello world';
        }
    }
    f();//undefined

(2) Pembolehubah gelung yang digunakan untuk mengira dibocorkan sebagai pembolehubah global

    var s = 'hello';
    for (var i = 0; i < s.length; i++) {
        console.log(s[i]);//h e l l o
    }
    console.log(i);//5

Pembolehubah i hanya digunakan untuk mengawal gelung, tetapi selepas gelung berakhir, ia tidak hilang, bocor menjadi pembolehubah global.

Contohnya adalah seperti berikut:

// 浏览器的 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

Dalam piawai ES6, apabila fungsi diisytiharkan dalam skop peringkat blok, pengisytiharan fungsi akan dianggap sebagai pembolehubah yang diisytiharkan oleh var dan dinaikkan ke bahagian atas skop peringkat blok , hanya mengisytiharkan fungsi sebagai pembolehubah dan tidak mengisytiharkan badan fungsi Kod di atas adalah bersamaan dengan:

// 浏览器的 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

[Cadangan berkaitan: tutorial video javascript, web Frontend

Atas ialah kandungan terperinci Apakah skop yang diperkenalkan dalam es6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn