Penutupan JavaScript adalah konsep yang kuat dan penting dalam JavaScript. Ia merujuk kepada fungsi, walaupun selepas fungsi luaran (tertutup) dilaksanakan, ia masih boleh mengakses pembolehubah fungsi luaran. Penutup adalah komponen utama skop JavaScript dan pengaturcaraan berfungsi.
prinsip kerja penutupan
Apabila fungsi ditakrifkan di dalam fungsi lain, fungsi dalaman dapat mengakses pembolehubah dan parameter fungsi luaran. Walaupun selepas fungsi luaran dilaksanakan, fungsi dalaman masih mengekalkan keizinan akses pembolehubah ini. Tingkah laku ini dipanggil penutupan.
Contoh penutupan
<code class="language-javascript">function 外部函数() {
let 外部变量 = '我来自外部作用域';
function 内部函数() {
console.log(外部变量); // 内部函数可以访问外部变量
}
return 内部函数;
}
const 闭包示例 = 外部函数();
闭包示例(); // 输出: "我来自外部作用域"</code>
Salin selepas log masuk
dalam contoh ini:
adalah penutupan, kerana ia masih mengekalkan akses
walaupun selepas pelaksanaan 内部函数
selesai. 外部函数
外部变量
aplikasi penutupan sebenar
Privasi data
: Penutupan boleh digunakan untuk membuat pembolehubah peribadi, dan pembolehubah ini hanya boleh diakses oleh fungsi tertentu. -
Fungsi Callback
<code class="language-javascript">function 创建计数器() {
let 计数 = 0;
return function() {
计数++;
return 计数;
};
}
const 计数器 = 创建计数器();
console.log(计数器()); // 输出: 1
console.log(计数器()); // 输出: 2
console.log(计数器()); // 输出: 3</code>
Salin selepas log masuk
: Ditutup secara meluas digunakan untuk pengaturcaraan asynchronous, seperti program pemprosesan acara atau panggilan AJAX.
-
corrihua
: Ditutup untuk fungsi corrihua, salah satu fungsi mengembalikan fungsi lain dengan beberapa parameter.
<code class="language-javascript">setTimeout(function() {
console.log('这是一个使用闭包的回调函数');
}, 1000);</code>
Salin selepas log masuk
-
kelebihan penutupan
Kawalan domain kawalan
<code class="language-javascript">function 乘法(a) {
return function(b) {
return a * b;
};
}
const 乘以二 = 乘法(2);
console.log(乘以二(5)); // 输出: 10</code>
Salin selepas log masuk
: Penutupan membantu mengawal skop pembolehubah untuk menghalang mereka daripada mencemarkan skop global.
Kecekapan memori
: Penutupan membolehkan memori dengan mengekalkan keizinan akses pembolehubah tertentu untuk menggunakan memori dengan berkesan tanpa membuat pembolehubah global. -
langkah berjaga -jaga untuk menutup
-
Kebocoran memori : Jika ia tidak digunakan dengan betul, penutupan boleh menyebabkan kebocoran memori, kerana mereka mengekalkan rujukan kepada pembolehubah luaran, yang mungkin menghalang kitar semula sampah.
Overhead prestasi
: Penutupan lebih banyak boleh menyebabkan masalah prestasi disebabkan peningkatan penggunaan memori.
Contoh di dunia nyata: pembolehubah peribadi -
dalam contoh ini:
- Pembolehubah adalah peribadi, dan hanya boleh diakses atau diubahsuai melalui kaedah yang disediakan oleh penutupan.
Atas ialah kandungan terperinci Penutupan JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!