Rumah >hujung hadapan web >tutorial js >Bagaimanakah Kari Berfungsi dengan Berbilang Fungsi Anak Panah dalam JavaScript?

Bagaimanakah Kari Berfungsi dengan Berbilang Fungsi Anak Panah dalam JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-12-21 06:48:12337semak imbas

How Does Currying Work with Multiple Arrow Functions in JavaScript?

Kari dengan Berbilang Fungsi Anak Panah dalam JavaScript

Anda mungkin menemui kod seperti ini dalam aplikasi React:

handleChange = field => e => {
  e.preventDefault();
  /// Do something here
}

Sintaks yang membingungkan ini mewakili apa yang dikenali sebagai kari fungsi.

Apa itu Kari?

Kari ialah teknik yang membolehkan sesuatu fungsi ditakrifkan dalam bahagian. Contohnya:

const add = x => y => x + y

Ini bersamaan dengan fungsi tradisional:

const add = function (x) {
  return function (y) {
    return x + y
  }
}

Memfokuskan pada Nilai Pulangan

Dalam fungsi anak panah, nilai pulangan diwakili sebagai:

const f = someParam => returnValue

Oleh itu, fungsi tambah kami mengembalikan fungsi:

const add = x => (y => x + y)

Memanggil fungsi:

add(2)(3)  // returns 5

Ini berlaku kerana panggilan fungsi luar mengembalikan fungsi dalam.

Memahami pemegangTukar Kod

Memohon ini pada pemegangTukar kod:

handleChange = function(field) {
  return function(e) {
    e.preventDefault()
    // Do something here
  };
};

Oleh kerana fungsi anak panah mengekalkan konteks, ia kelihatan seperti:

handleChange = function(field) {
  return function(e) {
    e.preventDefault()
    // Do something here
  }.bind(this)
}.bind(this)

Kod ini mencipta fungsi untuk medan tertentu. Dalam React, ia digunakan untuk menyediakan pendengar untuk pelbagai medan input tanpa menduplikasi kod.

Fungsi Anak Panah Berbilang

Fungsi anak panah berbilang boleh disusun, membenarkan fungsi yang mengejutkan seperti ini:

const $ = x => k =>
  $ (k(x))

Fungsi kari ini, dipanggil $ (sebagai pun pada sintaks Lisp), nampaknya menerima bilangan hujah yang sewenang-wenangnya, mengabstrakkan konsep arity.

Atas ialah kandungan terperinci Bagaimanakah Kari Berfungsi dengan Berbilang Fungsi Anak Panah dalam JavaScript?. 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