Penutupan dalam JavaScript

WBOY
Lepaskan: 2024-09-12 10:30:02
asal
926 orang telah melayarinya

Closures in JavaScript

Hai,

Dalam siaran ini, Mari belajar Penutupan.

Penutupan adalah penting dalam JavaScript kerana ia membenarkan fungsi mengakses pembolehubah daripada skop induknya, walaupun selepas fungsi induk itu ditutup. Ini penting untuk fungsi yang perlu mengingat data dari semasa ke semasa, seperti dalam fungsi panggil balik atau mengekalkan keadaan. Satu perkara yang perlu diingat di sini ialah pembolehubah skop induk yang tidak digunakan ialah sampah yang dikumpul.

Takrif:
Penutupan ialah gabungan fungsi yang digabungkan bersama (tertutup) dengan rujukan kepada keadaan sekelilingnya (persekitaran leksikal). Dengan kata lain, penutupan memberikan akses fungsi kepada skop luarnya. Dalam JavaScript, penutupan dibuat setiap kali fungsi dicipta, pada masa penciptaan fungsi.

Pada asasnya penutupan mempunyai akses kepada:

  • Skop mereka sendiri
  • Skop fungsi luar
  • Skop global

Mata Bonus
Skop Leksikal : Fungsi dalaman mempunyai akses kepada pembolehubah dalam skop luar.

Mari kita fahami dengan contoh.

Contoh

S> Tulis fungsi createCounter. Ia harus menerima init integer awal. Ia sepatutnya mengembalikan objek dengan tiga fungsi.

Tiga fungsi tersebut ialah:

kenaikan() meningkatkan nilai semasa sebanyak 1 dan kemudian mengembalikannya.
decrement() mengurangkan nilai semasa sebanyak 1 dan kemudian mengembalikannya.
reset() menetapkan nilai semasa kepada init dan kemudian mengembalikannya.

Lihat kod komen di bawah untuk contoh init = 5 kes.

Penyelesaian

var createCounter = function(init) {
    const INITIAL_VALUE = init;
    return {
        increment: () => ++init,
        decrement: () => --init,
        reset: () => init=INITIAL_VALUE,
    }
};

/**
 * const counter = createCounter(5)
 * counter.increment(); // 6
 * counter.reset(); // 5
 * counter.decrement(); // 4
 */
Salin selepas log masuk

Penjelasan:

  • Menangkap pembolehubah init dalam skop leksikalnya.
  • Memulangkan kaedah yang boleh mengakses dan mengubah suai init walaupun selepas createCounter selesai melaksanakan.
  • Mencipta keadaan peribadi dan berterusan (init) yang boleh diakses hanya melalui kaedah yang dikembalikan.
  • Membenarkan penciptaan berbilang kaunter bebas, setiap satu dengan keadaan terkapsulnya sendiri.

Jika anda mempunyai sebarang keraguan atau cadangan, sila tambah dalam ulasan.

Soalan ini diambil daripada leetcode. Pautan

Akhir sekali perlu diingat bahawa pembolehubah yang diisytiharkan secara global akan dapat diakses oleh setiap penutupan dalam skrip.

Saya harap sekarang anda mempunyai pemahaman yang baik tentang penutupan. Terima kasih kerana membaca

Atas ialah kandungan terperinci Penutupan dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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