Rumah > hujung hadapan web > tutorial js > Bagaimanakah JavaScript Curried Berfungsi Menjumlahkan Nilai Secara Berperingkat?

Bagaimanakah JavaScript Curried Berfungsi Menjumlahkan Nilai Secara Berperingkat?

Susan Sarandon
Lepaskan: 2024-11-28 14:48:16
asal
373 orang telah melayarinya

How Can a Curried JavaScript Function Incrementally Sum Values?

Menjumlahkan Nilai Secara Berperingkat dengan Fungsi Variadic Curried

Bolehkah kita mencipta jumlah fungsi JavaScript yang berkelakuan seperti berikut?

sum(1)(2) = 3
sum(1)(2)(3) = 6
sum(1)(2)(3)(4) = 10
Salin selepas log masuk

Ringkasnya, fungsi ini sepatutnya membolehkan kita mengumpul jumlah dengan menghantar berulang kali nilai tambahan.

Pada mulanya, kami diberitahu bahawa fungsi sedemikian adalah mustahil dalam JavaScript. Walau bagaimanapun, pendekatan alternatif telah muncul: menambahkan tanda di hadapan fungsi jumlah.

+sum(1)(2)(3)(4)
Salin selepas log masuk

Tanda, apabila digunakan bersama dengan fungsi, memaksa nilai yang dikembalikan fungsi kepada nombor. Jadi, dalam kes ini, jumlah fungsi secara berkesan mengembalikan nombor yang kemudiannya ditambah pada setiap panggilan berikutnya.

Untuk mencapai gelagat yang diingini, kita boleh menggunakan teknik kari dalam fungsi jumlah kita. Begini rupa pelaksanaannya:

function sum(n) {
  var v = function(x) {
    return sum(n + x);
  };

  v.valueOf = v.toString = function() {
    return n;
  };

  return v;
}

console.log(+sum(1)(2)(3)(4)); // Output: 10
Salin selepas log masuk

Pelaksanaan ini membungkus fungsi jumlah dalam pembolehubah v, yang kemudiannya dikembalikan. Fungsi v membolehkan kita menambah nilai secara berperingkat pada n pembolehubah. Dengan memaksa v kepada nombor menggunakan operator, kita boleh mendapatkan jumlah terkumpul.

Dalam contoh, pernyataan console.log mengeluarkan 10, iaitu jumlah 1, 2, 3, dan 4.

Atas ialah kandungan terperinci Bagaimanakah JavaScript Curried Berfungsi Menjumlahkan Nilai Secara Berperingkat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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