Rumah > Artikel > hujung hadapan web > Apakah skop yang diperkenalkan dalam es6
"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.
Persekitaran pengendalian tutorial ini: sistem Windows 10, ECMAScript versi 6.0, komputer Dell G3.
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('I am outside!'); } (function () { if (false) { // 重复声明一次函数f function f() { console.log('I am inside!'); } } 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('I am outside!'); } (function () { var f = undefined; if (false) { function f() { console.log('I am inside!'); } } 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!