Penutupan JavaScript ialah konsep yang agak kompleks. Ramai pemula mendapati sukar untuk memahami penutupan, tetapi ia merupakan konsep penting untuk memahami JavaScript dan menulis kod berkualiti tinggi.
Apakah itu penutupan?
Penutupan bermaksud fungsi boleh mengakses pembolehubah di luar skopnya Pembolehubah ini masih wujud walaupun di luar fungsi. Ini kerana apabila fungsi ditakrifkan, ia mewujudkan skop sendiri yang mengandungi semua parameter dan pembolehubah fungsi yang ditakrifkan di dalam fungsi. Apabila fungsi kembali, skop masih wujud, dan fungsi akan terus mengakses pembolehubah dalam skop Ini adalah penutupan.
Prinsip asas:
Apabila fungsi dipanggil, rantai skopnya akan merangkumi pembolehubah daripada skop semasa dan semua skop induk. Jika fungsi mempunyai fungsi bersarang, rantaian skop fungsi bersarang juga akan merangkumi pembolehubah daripada skop induk dan skop semasa. Dalam persekitaran sedemikian, fungsi dalam boleh mengakses pembolehubah fungsi luar, tetapi fungsi luar tidak boleh mengakses pembolehubah fungsi dalam. Mekanisme ini dipanggil skop leksikal atau skop statik.
Aplikasi Penutupan:
Penutupan digunakan secara meluas dalam banyak corak dan teknik reka bentuk dalam JavaScript. Berikut ialah beberapa kes penggunaan praktikal menggunakan penutupan:
1 Dapatkan pembolehubah persendirian:
Oleh kerana tiada konsep pembolehubah persendirian dalam JavaScript, menggunakan penutupan boleh mensimulasikan pembolehubah persendirian. Selagi pembolehubah ditakrifkan di dalam fungsi, ia akan wujud dalam skop fungsi tersebut sehingga fungsi bersarang kembali atau dipadamkan.
Sebagai contoh, contoh kod berikut menunjukkan cara menggunakan penutupan untuk mencipta pembilang:
fungsi createCounter() {
biarkan kiraan = 0;
pembilang fungsi() {
count++; console.log(count);
}
kaunter pulangan;
}
const myCounter = createCounter();
myCounter(); //1
myCounter(); //2
myCounter(); //3
2. Pelaksanaan tertunda:
Menggunakan penutupan, anda boleh mencipta fungsi untuk melaksanakan pelaksanaan tertunda. Apabila anda perlu menunggu untuk tempoh masa sebelum melaksanakan fungsi, anda boleh menggunakan penutupan untuk mencapai ini.
Sebagai contoh, kod berikut menunjukkan cara menggunakan penutupan untuk melaksanakan fungsi pelaksanaan tertunda:
fungsi delayedFunction() {
biarkan pemasa;
kembalikan fungsi() {
clearTimeout(timer); timer = setTimeout(() => { console.log('Delayed function executed!'); }, 1000);
}
}
const myDelayedFunction = delayedFunction();
myDelayedFunction(); //Tunggu selama 1 saat dan kemudian keluarkan 'Fungsi tertunda dilaksanakan!'
Penutupan walaupun Ia mungkin kelihatan sukar, tetapi ia adalah konsep yang sangat berguna untuk pembangun JavaScript. Memahami prinsip asas penutupan adalah kunci untuk memahami fungsi tertib tinggi dan corak reka bentuk dalam JavaScript. Saya harap artikel ini membantu anda lebih memahami penutupan dan menerapkannya pada program anda.
Atas ialah kandungan terperinci Fahami prinsip asas penutupan JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!