Rumah >hujung hadapan web >tutorial js >Penutupan JavaScript: Mereka Tidak Menakutkan Seperti Yang Anda Fikirkan!

Penutupan JavaScript: Mereka Tidak Menakutkan Seperti Yang Anda Fikirkan!

DDD
DDDasal
2025-01-17 16:30:10889semak imbas

JavaScript Closures: They

Penutupan JavaScript: Kuasai kemahiran lanjutan skop JS dengan mudah! Adakah anda masih bimbang tentang isu skop JavaScript? Jangan risau, hari ini kita akan melihat dengan lebih mendalam tentang penutupan dan menerangkannya dengan cara yang mudah difahami!

Apakah penutupan (penjelasan popular)?

Bayangkan penutupan sebagai beg galas yang dibawa oleh sesuatu fungsi. Beg galas ini mengandungi semua pembolehubah dalam persekitaran di mana fungsi itu dicipta. Bukankah ia sejuk?

Mari kita lihat contoh mudah:

<code class="language-javascript">function createGreeting(name) {
    // 这个变量在背包里!
    const message = "Hello, ";

    return function() {
        // 看!我们仍然可以在这里使用'message'
        console.log(message + name);
    }
}

const greetBob = createGreeting("Bob");
greetBob(); // 输出: "Hello, Bob"</code>

Mengapa penutupan sangat penting?

Kuasa penutupan ialah ia boleh membantu kami melaksanakan beberapa fungsi yang sangat berguna:

  1. Pembolehubah peribadi (seperti diari rahsia?)
<code class="language-javascript">function createCounter() {
    let count = 0;  // 这是我们的秘密!

    return {
        increment() { count++ },
        getCount() { return count }
    };
}

const counter = createCounter();
counter.increment();
console.log(counter.getCount()); // 1
// console.log(count); // 错误!无法直接访问它</code>
  1. Fungsi Kilang (seperti pembuat jampi ajaib✨)
<code class="language-javascript">function createMultiplier(multiplier) {
    return (number) => number * multiplier;
}

const double = createMultiplier(2);
const triple = createMultiplier(3);

console.log(double(5));  // 10
console.log(triple(5));  // 15</code>

Kemahiran ingatan cepat

Ingat, penutupan mengekalkan pembolehubah, jadi ia mengambil sedikit ingatan. Ia seperti meletakkan buku dalam beg galas anda - ia mengambil ruang! Jika anda membuat beribu-ribu penutupan, anda mungkin ingin mempertimbangkan pendekatan lain.

<code class="language-javascript">// 在循环中要小心使用!
for (let i = 0; i < 10; i++) {
    // ...
}</code>

Detik penting

Apabila saya mula-mula mengetahui tentang penutupan, perkara yang menarik perhatian saya ialah ia membantu kami mengelak daripada menggunakan pembolehubah global dan memastikan kod itu bersih. Daripada mencemarkan skop global dengan pembolehubah, gunakan penutupan untuk memastikan kod anda teratur:

const todoApp = (fungsi() { tugasan const = []; // Persendirian!

<code>return {
    addTask(task) { tasks.push(task) },
    getTasks() { return [...tasks] }
};</code>

})();

todoApp.addTask("Penutupan Pembelajaran"); console.log(todoApp.getTasks()); // ["Penutupan Pembelajaran"]

Ringkasan

Itu sahaja! Penutupan mungkin kelihatan agak rumit pada mulanya, tetapi ia hanyalah fungsi yang membawa "knapsack" pembolehubah. Anda boleh menggunakannya untuk:

<code>

- 创建私有变量
- 创建函数工厂
- 保持代码整洁

记住要注意内存使用,你就能轻松驾驭闭包!

你最喜欢的闭包用法是什么?请在下方评论——我很想听听你的想法!

快乐编程!?

---

*觉得这篇文章有帮助吗?关注我,获取更多不会让你头疼的JavaScript技巧和窍门!*</code>

Atas ialah kandungan terperinci Penutupan JavaScript: Mereka Tidak Menakutkan Seperti Yang Anda Fikirkan!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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