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!
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:
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; }; };
Kod ini mentakrifkan fungsi yang dipanggil createCounter yang mengembalikan fungsi lain (penutupan), yang mampu menyimpan dan memanipulasi pembolehubah setempat (dalam kes ini, pembilang).
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.
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?
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.
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!