Rumah > Artikel > hujung hadapan web > Bercakap tentang pemahaman saya tentang prototaip JavaScript dan siri penutupan (nota rawak 9)_kemahiran javascript
Bacaan berkaitan: Bercakap tentang pemahaman saya tentang prototaip JavaScript dan siri penutupan (Shuishou Note 6)
Skop
for(var i = 0; i < 10; i++) { //不好的声明方式 //... } console.log(i); /*----------------------------------------------*/ var i = 0; //好的声明方式 for(i = 0; i < 10; i++) { //.... } console.log(i);
Apabila kami mengisytiharkan pembolehubah, kod global diisytiharkan di bahagian hadapan, dan pembolehubah yang diisytiharkan dalam fungsi mesti diisytiharkan di hadapan badan fungsi. Pada masa yang sama, pengendali "var" mesti digunakan semasa mengisytiharkan pembolehubah.
var a = 10, //全局作用域 b = 20; function fn() { //fn函数作用域 var a = 100, c = 300; function bar() { //bar函数作用域 var a = 1000, d = 4000; } }
Skop ditentukan apabila fungsi ditakrifkan, bukan apabila fungsi dipanggil.
1. Persekitaran konteks global telah ditentukan apabila program dimuatkan, dan pembolehubah diberikan nilai semasa program dilaksanakan.
2. Jalankan ke baris 36, panggil fn(10), buat konteks pelaksanaan fungsi fn, tolak tindanan dan tetapkan konteks ini kepada keadaan aktif.
4. Selepas bar(100) dipanggil, ia muncul dari timbunan dan konteks fungsi bar(100) dimusnahkan. Kemudian laksanakan baris 33, bar panggilan(200), cipta konteks pelaksanaan fungsi bar(200), tolak tindanan, dan tetapkan konteks ini kepada keadaan aktif.
5 Selepas panggilan ke bar(200) selesai, ia dikeluarkan dari timbunan dan konteksnya dimusnahkan. Kawalan kini diserahkan kepada konteks fn(10), yang menjadi aktif semula.
6 Pada masa ini, fn(10) dipanggil, muncul dari timbunan, dan konteksnya dimusnahkan. Kawalan dipindahkan ke konteks pelaksanaan global.
Proses pelaksanaan sekeping kod ini selesai pada ketika ini.
Ringkasan: