Rumah  >  Artikel  >  hujung hadapan web  >  Fungsi tertib tinggi dan kari dalam JavaScript

Fungsi tertib tinggi dan kari dalam JavaScript

WBOY
WBOYke hadapan
2023-09-04 17:57:07766semak imbas

JavaScript 中的高阶函数和柯里化

Fungsi ialah ciri yang sangat berguna dalam mana-mana bahasa pengaturcaraan. Pembangun mungkin boleh mencari mana-mana bahasa pengaturcaraan yang tidak mengandungi fungsi ini. Tambahan pula, apabila kita mula mempelajari mana-mana bahasa pengaturcaraan, kita pasti belajar tentang fungsi, iaitu, blok kod yang menyediakan kebolehgunaan semula kod.

Dalam tutorial ini, kita akan belajar tentang fungsi tertib tinggi dan karipap.

Fungsi pesanan lebih tinggi

Sebelum memulakan karipap dalam JavaScript, mari kita fahami fungsi perintah tinggi .

Takrifan ringkas bagi fungsi tertib tinggi ialah: fungsi yang mengambil fungsi lain sebagai parameter atau mengembalikan fungsi. Pernahkah anda menggunakan kaedah sort() dalam JavaScript atau mana-mana bahasa pengaturcaraan lain seperti C++ atau Python? Jika ya, anda mungkin telah menghantar fungsi panggil balik sebagai hujah kepada kaedah sort() untuk mengisih tatasusunan berdasarkan konteks tertentu.

Oleh itu, kita boleh katakan bahawa kaedah sort() ialah fungsi tertib lebih tinggi.

tatabahasa

Pengguna boleh menggunakan fungsi tertib lebih tinggi mengikut sintaks berikut.

function sortArray(ele1, ele2) {
   
   // function body
}
array.sort(sortArray);

Dalam sintaks di atas, sort() ialah fungsi tertib lebih tinggi kerana kami telah melepasi fungsi sortArray() sebagai parameter.

Contoh

Dalam contoh di bawah, kami mencipta tatasusunan nombor yang mengandungi nilai yang berbeza. Selepas itu, kami menggunakan kaedah filter() untuk menapis semua elemen dalam tatasusunan yang boleh dibahagikan dengan 2.

Pengguna boleh melihat bahawa kami telah melepasi fungsi filter_func() sebagai parameter kaedah filter(). Oleh itu, kita boleh katakan bahawa kaedah filter() ialah fungsi tertib lebih tinggi.

<html>
<body>
   <h2>Higher-order functions using the filter() method.</h2> 
   <p id = "output"> </p>
   <script>
      let output = document.getElementById("output");
      let array = [10, 30, 23, 32, 32, 32, 32, 45, 5, 6, 878989, 34, 23];
      
      // creating the function to filter values
      function filter_func(element) {
         return element % 2 == 0;
      }
      
      // higher-order function
      let divisibleBy2 = array.filter(filter_func);
      output.innerHTML += "The filtered values are " + divisibleBy2;
   </script>
</body>
</html>

Contoh

Dalam contoh ini, kami mencipta tatasusunan rentetan. Selepas itu, kami menggunakan huruf besar pertama bagi semua nilai tatasusunan menggunakan kaedah map(). Kami menghantar fungsi anak panah panggil balik sebagai hujah kepada kaedah peta, yang mengembalikan rentetan selepas aksara pertama ditulis dengan huruf besar.

Kami menggunakan huruf besar huruf pertama bagi setiap rentetan tatasusunan menggunakan kaedah substr() dan toUpperCase().

<html>
<body>
   <h2>Higher-order functions using the map() method</h2>
   <p id = "output"> </p>
   <script>
      let output = document.getElementById("output");
      let array = ["hi", "users", "welcome", "on", "tutorialspoint!"];
      output.innerHTML += "Original Array: <br>" + array + "<br>";
      
      // higher-order function
      let results = array.map((string) => {
         
         // creating the first character capitalize
         return string.substr(0, 1).toUpperCase() + string.substr(1);
      });
      output.innerHTML += "<br>The array after capitalizing the first character: <br>" + results;
   </script>
</body>
</html>

Kini, pengguna boleh mengetahui faedah menggunakan fungsi tertib lebih tinggi. Sebagai contoh, kaedah filter() telah dilaksanakan dalam pustaka Tatasusunan JavaScript, membenarkan pengguna mengatasi logik penapis dengan menghantar fungsi panggil balik tersuai sebagai parameter.

Kari dalam JavaScript

Karipap adalah serupa dengan fungsi peringkat tinggi, ia mengembalikan fungsi. Fungsi kari menerima berbilang parameter, dan pengguna boleh menghantar nilai parameter ke fungsi bersarang.

Fungsi bersarang terakhir bagi fungsi kari mengembalikan output akhir.

tatabahasa

Pengguna boleh menulis fungsi kari mengikut sintaks berikut.

function addition(num1) {
   return function (num2) {
      return num1 + num2;
   };
}
addition(10)(20);

Kami mengembalikan fungsi ini daripada fungsi addition() dalam sintaks di atas. Selain itu, pengguna juga boleh memerhatikan cara kami memanggil fungsi addition() dengan menghantar berbilang parameter.

Contoh

Dalam contoh di bawah, kami mencipta fungsi kari bernama addition(). Fungsi penambahan hanya mempunyai satu parameter. Ia juga mengembalikan fungsi bersarang yang juga mengambil satu hujah. Fungsi bersarang mengembalikan jumlah argumen num1 dan num2 .

<html>
<body>
   <h2>Curried functions</h2>
   <p id = "output"> </p>
   <script>
      let output = document.getElementById("output");
      
      // curried function, which returns the function
      function addition(num1) {
         return function (num2) {
            return num1 + num2;
         };
      }
      output.innerHTML += "After calling the curried function, the result is " + addition(10)(20);
   </script>
</body>
</html>

Pengguna mengetahui tentang perintah lebih tinggi fungsi dan fungsi kari dalam tutorial ini. Fungsi Higher-order dan currying mempunyai banyak kegunaan, sebahagian daripadanya telah kita lihat dengan tiga contoh.

Atas ialah kandungan terperinci Fungsi tertib tinggi dan kari dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam