Rumah > hujung hadapan web > tutorial js > Memahami konsep skop JavaScript dan kemahiran skop_javascript peringkat blok

Memahami konsep skop JavaScript dan kemahiran skop_javascript peringkat blok

WBOY
Lepaskan: 2016-05-16 16:35:47
asal
1059 orang telah melayarinya

Skop sentiasa menjadi perkara paling penting dalam mana-mana bahasa pengaturcaraan, kerana ia mengawal keterlihatan dan kitaran hayat pembolehubah dan parameter. Bercakap mengenainya, fahami dahulu dua konsep: skop peringkat blok dan skop fungsi.

Apakah skop peringkat blok?

Mana-mana set pernyataan dalam sepasang pendakap kerinting ({ dan }) tergolong dalam blok, dan semua pembolehubah yang ditakrifkan di dalamnya tidak kelihatan di luar blok kod Kami memanggilnya skop peringkat blok.

Skop fungsi mudah difahami (*^__^*).

Kebanyakan bahasa seperti C mempunyai skop peringkat blok, tetapi JS tidak. Sila lihat demo di bawah:

//C语言 
#include <stdio.h> 
void main() 
{ 
int i=2; 
i--; 
if(i) 
{ 
int j=3; 
} 
printf("%d/n",j); 
} 
Salin selepas log masuk

Apabila anda menjalankan kod ini, ralat "use an undefined variable:j" akan muncul. Seperti yang anda lihat, bahasa C mempunyai skop peringkat blok kerana j ditakrifkan dalam blok pernyataan if, jadi ia tidak boleh diakses di luar blok.

Bagaimana JS berkelakuan. Mari lihat demo yang lain:

functin test(){ 
for(var i=0;i<3;i++){ 
} 
alert(i); 
} 
test();
Salin selepas log masuk

Jalankan kod ini dan "3" muncul di luar blok, pembolehubah yang saya takrifkan dalam blok masih boleh diakses. Dalam erti kata lain, JS tidak menyokong skop peringkat blok, ia hanya menyokong skop fungsi dan pembolehubah yang ditakrifkan di mana-mana dalam fungsi boleh dilihat di mana-mana dalam fungsi.

Jadi bagaimana kita boleh menjadikan JS mempunyai skop peringkat blok? Adakah anda masih ingat bahawa pembolehubah yang ditakrifkan dalam fungsi akan dimusnahkan apabila fungsi dipanggil? Bolehkah kita menggunakan ciri ini untuk mensimulasikan skop peringkat blok JS? Lihat DEMO di bawah:

function test(){ 
(function (){ 
for(var i=0;i<4;i++){ 
} 
})(); 
alert(i); 
} 
test();
Salin selepas log masuk

Apabila anda menjalankannya sekali lagi pada masa ini, ralat "i" yang tidak ditentukan akan muncul Haha, ia telah dilaksanakan~~~Di sini, kami meletakkan blok pernyataan untuk penutupan, dan kemudian memanggil fungsi ini panggilan fungsi selesai, pembolehubah i dimusnahkan secara automatik, jadi kami tidak boleh mengaksesnya di luar blok.

Ciri penutupan JS ialah ciri yang paling penting ((*^__^*) semua orang tahu). Dalam JS, untuk mengelakkan konflik penamaan, kita harus cuba mengelak daripada menggunakan pembolehubah global dan fungsi global. Jadi, bagaimana untuk mengelakkannya? Ya, seperti yang ditunjukkan dalam demo di atas, kita boleh meletakkan semua yang kita mahu tentukan ke dalam

(function (){ 
//内容 
})();
Salin selepas log masuk

, pada masa ini, adakah kita sama dengan menambah skop fungsi pada lapisan luarnya? Program di luar skop ini tidak boleh mengaksesnya.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan