Penutupan dan kari adalah teknik umum dan relatif canggih yang digunakan dalam JavaScript. Semua bahasa pemrograman fungsional mendukung kedua konsep ini. Oleh karena itu, jika kita ingin sepenuhnya memanfaatkan karakteristik pemrograman fungsional dalam JavaScript, kita perlu memiliki pemahaman mendalam tentang kedua konsep ini. Penutupan sebenarnya merupakan fondasi yang sangat diperlukan untuk kari.
1. Konsep kari
Dalam ilmu komputer, Curry adalah teknik mengubah fungsi yang menerima banyak parameter ke dalam fungsi yang menerima parameter tunggal (parameter pertama dari fungsi asli) dan mengembalikan fungsi baru yang menerima parameter yang tersisa dan mengembalikan hasilnya. Teknologi ini dinamai menurut logika Haskell Curry oleh Christopher Strachey, meskipun diciptakan oleh Moses Schnfinkel dan Gottlob Frege. Secara intuitif, Curry mengklaim bahwa "jika Anda memperbaiki parameter tertentu, Anda akan mendapatkan fungsi yang menerima parameter yang tersisa". Jadi untuk fungsi yx dengan dua variabel, jika y = 2 diperbaiki, fungsi 2x dengan satu variabel diperoleh.
Currying berarti melewati parameter tertentu dari fungsi terlebih dahulu untuk mendapatkan fungsi sederhana. Tetapi parameter pra-pass disimpan dalam penutupan, jadi ada beberapa fitur aneh. Misalnya:
var adder = function (num) {return function (y) {return num + y; }} var inc = adder (1); var dec = adder (-1)Dua Variabel INC/DEC di sini sebenarnya adalah dua fungsi baru, yang dapat disebut dalam tanda kurung, seperti penggunaan dalam contoh berikut:
// Inc, DEC sekarang dua fungsi baru, yang digunakan untuk mentransfer nilai parameter yang masuk (+/-) 1Print (Inc (99)); // 100print (dec (101)); // 100print (adder (100) (2)); // 102print (adder (2) (100)); //102
2. Penerapan kari
Menurut fitur Currying, kita dapat menulis lebih banyak kode yang menarik. Misalnya, dalam pengembangan front-end, kita sering menemukan situasi ini. Ketika permintaan kembali dari server, kita perlu memperbarui beberapa elemen halaman tertentu, yaitu konsep penyegaran parsial. Menggunakan refresh lokal sangat sederhana, tetapi kodenya mudah ditulis menjadi berantakan. Dan jika kari digunakan, itu dapat sangat mempercantik kode kami dan membuatnya lebih mudah untuk dipertahankan. Mari kita lihat contoh:
// UPDATE akan mengembalikan fungsi, yang dapat mengatur atribut ID ke konten elemen web dari fungsi item pembaruan (item) {return function (teks) {$ ("Div#"+item) .html (teks); }} // Permintaan AJAX, saat berhasil, Panggilan Parameter CallbackFunction Refresh (url, callback) {var params = {type: "echo", data: ""}; $ .Ajax ({type: "Post", url: url, cache: false, async: true, dataType: "json", data: params, // call success: function (data, status) {callback (data);}, // call error Ketika kesalahan terjadi di permintaan: function (err) {warn ("kesalahan:"+err); });} refresh ("action.do?target=news", update ("newspanel")); refresh ("action.do?target=articles", update ("artikelpanel")); refresh ("action.do?target=pictures", update ("picturePanel")); di mana fungsi pembaruan adalah instance dari kari, yang akan mengembalikan fungsi, yaitu: update ("newspanel") = function (teks) {$ ("Div#newspanel"). html (teks);}Karena nilai pengembalian pembaruan ("Newspanel") adalah fungsi dan parameter yang diperlukan adalah string, dalam panggilan Ajax Refresh, ketika berhasil, data yang dikembalikan oleh callback akan diteruskan ke panggilan balik, sehingga menyadari penyegaran panel koran. Refresh dari artikel artikel lain Artikelpanel dan panel gambar Picturepanel semuanya diadopsi dengan cara ini. Dengan cara ini, keterbacaan dan pemeliharaan kode ditingkatkan.
Di atas adalah seluruh konten artikel ini. Untuk informasi lebih lanjut tentang JavaScript, Anda dapat memeriksa: "Tutorial Referensi JavaScript" dan "Panduan Gaya Kode JavaScript". Saya juga berharap semua orang akan lebih mendukung wulin.com.