Rumah  >  Artikel  >  hujung hadapan web  >  Memahami Fungsi Pesanan Tinggi dalam JavaScript

Memahami Fungsi Pesanan Tinggi dalam JavaScript

DDD
DDDasal
2024-11-20 11:39:46961semak imbas

Razumevanje funkcija višeg reda (Higher-Order Functions) u JavaScript-u

Jika anda sedang mempelajari JavaScript, anda mungkin pernah menjumpai istilah Fungsi Pesanan Tinggi. Walaupun kedengarannya rumit, ia tidak begitu rumit. JavaScript, sebagai bahasa pengaturcaraan berfungsi, membenarkan penggunaan fungsi ini, yang penting dalam pengaturcaraan berasaskan fungsi.

Pengaturcaraan Berfungsi

Pengaturcaraan fungsional membayangkan penciptaan dan penggunaan fungsi sebagai blok binaan utama. Dalam pendekatan ini, fungsi boleh dihantar sebagai parameter kepada fungsi lain atau dikembalikan sebagai hasil. Cara pemikiran ini membolehkan penulisan kod yang teratur dan cekap.

Ciri Kelas Pertama

JavaScript menganggap fungsi sebagai "warga kelas pertama". Ini bermakna fungsi ialah objek — jenis objek tertentu yang boleh diberikan kepada pembolehubah, diluluskan sebagai parameter dan digunakan dalam konteks yang berbeza, seperti nombor atau rentetan.

Contoh:

function pozdrav() {
  console.log('Zdravo, svete!');
}
pozdrav();  // Ispisuje 'Zdravo, svete!'

// Dodavanje svojstva funkciji
pozdrav.jezik = 'srpski';
console.log(pozdrav.jezik); // Ispisuje 'srpski'

Menetapkan Fungsi kepada Pembolehubah

Dalam JavaScript, fungsi boleh diberikan kepada pembolehubah:

const kvadrat = function(x) {
  return x * x;
};
console.log(kvadrat(5));  // Ispisuje 25

Fungsi Lulus sebagai Parameter

Salah satu ciri utama fungsi kelas pertama ialah keupayaan untuk menghantarnya sebagai hujah kepada fungsi lain:

function formalniPozdrav() {
  console.log("Kako ste?");
}
function neformalniPozdrav() {
  console.log("Šta ima?");
}
function pozdravVrsta(vrsta, formalan, neformalan) {
  if (vrsta === 'formalan') {
    formalan();
  } else if (vrsta === 'neformalan') {
    neformalan();
  }
}
pozdravVrsta('neformalan', formalniPozdrav, neformalniPozdrav);  // Ispisuje 'Šta ima?'

Fungsi Pesanan Tinggi

Fungsi Susunan Tinggi ialah fungsi yang menerima fungsi lain sebagai hujah atau mengembalikannya sebagai hasil. Ini membolehkan penulisan kod yang lebih elegan dan ringkas. Contohnya termasuk kaedah peta, tapis dan kurangkan.

Kaedah peta

peta mencipta tatasusunan baharu dengan memanggil fungsi pada setiap elemen tatasusunan sedia ada:

Tiada kaedah peta:

const arr1 = [10, 20, 30, 40, 50];
const arr2 = [];
for (let i = 0; i < arr1.length; i++) {
  arr2.push(arr1[i] * 2);
}
console.log(arr2);  // [20, 40, 60, 80, 100]

Dengan kaedah peta:

const arr1 = [10, 20, 30. 40, 50];
const arr2 = arr1.map(item => item * 2);
console.log(arr2);  // [20, 40, 60, 8-, 100]

Kaedah penapis

Penapis

mencipta tatasusunan baharu dengan semua elemen yang memenuhi syarat yang diberikan:

const osobe = [
  { ime: 'Pera', godine: 13 },
  { ime: 'Mika', godine: 18 },
  { ime: 'Laza', godine: 64 },
  { ime: 'Ana', godine: 10 },
];
const punoletni = osobe.filter(osoba => osoba.godine >= 18);
console.log(punoletni);  // [ { ime: 'Mika', godine: 18 }, { ime: 'Laza', godine: 64 } ]

mengurangkan Kaedah

reduce melaksanakan fungsi pada setiap ahli tatasusunan dan mengembalikan nilai unik:

Contoh dengan mengurangkan:

const arr = [4, 6, 10, 5, 25];
const suma = arr.reduce((akumulator, vrednost) => akumulator + vrednost, 0);
console.log(suma);  // 50

Mencipta Fungsi Pesanan Tinggi

Bayangkan jika JavaScript tidak mempunyai kaedah peta terbina dalam. Kami boleh menciptanya sendiri:

function mapiraj(arr, fn) {
  const noviNiz = [];
  for (let i = 0; i < arr.length; i++) {
    noviNiz.push(fn(arr[i]));
  }
  return noviNiz;
}
const duzine = mapiraj(['JavaScript', 'Python'], item => item.length);
console.log(duzine);  // [10, 6]

Kesimpulan

Fungsi tertib lebih tinggi membolehkan fleksibiliti dan kesederhanaan kod dalam JavaScript. Dengan menggunakan ciri ini, kod kami menjadi lebih ringkas, teratur dan boleh diselenggara.

Atas ialah kandungan terperinci Memahami Fungsi Pesanan Tinggi 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