Rumah > hujung hadapan web > tutorial js > Rick dan Morty dan Closures: apakah persamaan perkara ini?

Rick dan Morty dan Closures: apakah persamaan perkara ini?

Susan Sarandon
Lepaskan: 2024-10-24 06:36:02
asal
756 orang telah melayarinya

Rick and Morty e Clorsures: o que essas coisas tem em comum?

Jadi, apa khabar? Saya harap begitu!

Saya cuba menyelesaikan beberapa masalah pengaturcaraan dalam Leetcode dan dalam salah satu cabaran saya menemui konsep yang sangat penting dalam pengaturcaraan yang sukar difahami oleh ramai orang.

Jadi saya memutuskan untuk menulis di sini cuba menerangkan dengan cara yang terbaik cara penutupan berfungsi dalam JavaScript. Jom ikut saya!

Masalahnya

Saya sedang mengusahakan cabaran yang dipanggil "Kaunter" di mana saya perlu mencipta fungsi pembilang yang pada mulanya mengembalikan integer n dan, dengan setiap panggilan berikutnya, mengembalikan 1 unit lebih daripada nilai sebelumnya. Contohnya:

  • kaunter(10) mengembalikan 10
  • kaunter() (dipanggil semula) mengembalikan 11
  • kaunter() (dipanggil semula) mengembalikan 12

Masalah ini memberikan beberapa petunjuk, termasuk kita boleh menggunakan fungsi yang mengembalikan fungsi lain.

Ini ialah konsep penutupan. Jadi saya mengikuti petua dan pergi ke laluan ini. Inilah penyelesaian yang saya dapat:

var createCounter = function (n) {
    let contador = n;
    return function () {
        resultado = contador;
        contador++
        return resultado;
    };
};
Salin selepas log masuk

Kod ini mentakrifkan fungsi yang dipanggil createCounter yang mengembalikan fungsi lain (penutupan), yang mampu menyimpan dan memanipulasi pembolehubah setempat (dalam kes ini, pembilang).

  • Kaunter bermula dengan nilai n yang diluluskan apabila anda memanggil createCounter().
  • Setiap kali anda melaksanakan fungsi, fungsi dalam (kembali) mengakses nilai pembilang semasa, mengembalikannya dan kemudian menambahnya.
  • Ini membolehkan kaunter "mengingat" di mana ia berhenti, terima kasih kepada penutupan.

Langkah terakhir ini adalah di mana kita menyedari kuasa sebenar penutupan. Penutupan ialah apabila fungsi mengembalikan fungsi lain yang mempunyai akses kepada pembolehubah luaran dan mengekalkan keadaannya antara panggilan. Ia seperti mempunyai sedikit "bersembunyi" di dalam fungsi saya di mana saya boleh menyimpan maklumat dan mengaksesnya kemudian.

Dan di manakah Rick dan Morty sesuai dengan cerita ini?

Siri Rick dan Morty bermain dengan perjalanan antara dimensi, tamadun lain dan mengkritik serta mencadangkan renungan tentang banyak soalan kewujudan untuk manusia.

Jika anda tidak tahu siri ini, berikut ialah ringkasan ringkas: Rick Sanchez, watak utama karya itu, ialah seorang saintis yang membangunkan semua jenis teknologi gila dan biasanya membawa cucunya Morty dalam pengembaraannya. Salah satu ciptaan lelaki tua yang paling terkenal ialah portal interdimensi, yang membolehkannya mengembara antara realiti dan dimensi. Untuk mengetahui lebih lanjut, anda perlu menonton siri ini (ketawa).

Apa yang anda dapat, Neilton?

Nah, bayangkan Rick membangunkan beg galas interdimensi untuk Morty, yang memberikan akses kepada dimensi tertentu. Dalam dimensi ini, Rick meletakkan beberapa alat penting. Morty boleh membawa beg galas itu ke mana-mana — sama ada ke sekolah, berjalan-jalan atau pun untuk perjalanan antara galaksi — dan, walaupun jauh dari Rick, dia masih mempunyai akses kepada semua yang disimpan di sana.

Bahagian terbaik? Morty boleh membuka beg galas dan mengeluarkan alatan bila-bila masa dia mahu menggunakan atau mengubah suai apa yang ada di dalamnya. Dan tidak kira di mana ia berada, apa yang disimpan masih boleh diakses.

Dan bagaimanakah contoh ini bersambung dengan penutupan?

  • Rick ialah fungsi luaran, yang mencipta skop (dimensi) dan pembolehubah (alat) yang boleh diakses kemudian.
  • Morty dengan beg galas mewakili fungsi dalaman, yang boleh mengakses dan mengubah suai pembolehubah fungsi luaran.
  • Dimensi mewakili skop leksikal fungsi luaran, iaitu, pembolehubah yang dicipta dalam fungsi luaran dan diakses oleh fungsi dalaman, walaupun selepas fungsi luaran dilaksanakan.
  • Fakta bahawa Morty boleh mengakses perkara dalam dimensi dari mana-mana sahaja mencerminkan ketekalan skop: walaupun selepas fungsi luar selesai, fungsi dalam mengekalkan akses kepada pembolehubah dalam skop asal.

Penutupan ialah sumber yang berkuasa dalam pengaturcaraan. Antara kelebihan utama menggunakan penutupan, saya menyerlahkan pengkapsulan dan penghafalan. Enkapsulasi kerana nilai hanya boleh diakses melalui penutupan (fungsi dalaman) dan memoisasi kerana keupayaan untuk mengekalkan nilai pembolehubah antara panggilan.


Imej jana AI: https://designer.microsoft.com/image-creator?scenario=texttoimage

Prompt: Hasilkan imej di mana Rick daripada Rick dan Morty menyerahkan Morty peranti poket dimensi yang bercahaya. Morty sedang mengeluarkan objek dari poket, seperti alatan dan gajet, manakala Rick dengan santai menerangkan mekaniknya dalam makmal. Poket mewakili penutupan, mengandungi item terapung yang boleh terus diakses oleh Morty, walaupun selepas Rick melangkah pergi.


Kesimpulan

Jadi, adakah anda faham apakah penutupan itu dan betapa pentingnya penutupan itu dalam pengaturcaraan? Kadang-kadang saya berharap saya mempunyai beg galas seperti Morty untuk menyimpan barang berguna atau sekadar teleport ke dimensi lain (ketawa).

Jika anda menyukai kandungan, komen dan kongsi, pergi! Tolong berikan saya kekuatan jika anda rasa artikel ini akan membantu orang lain.

Jumpa lagi nanti!

Atas ialah kandungan terperinci Rick dan Morty dan Closures: apakah persamaan perkara ini?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan