首頁 > web前端 > js教程 > 理解 JavaScript 中的高階函數

理解 JavaScript 中的高階函數

DDD
發布: 2024-11-20 11:39:46
原創
1026 人瀏覽過

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

如果您正在學習 JavaScript,您可能遇到過術語高階函數。雖然聽起來很複雜,但其實沒有那麼複雜。 JavaScript 作為一種函數式程式語言,允許使用這些函數,這在基於函數的程式設計中至關重要。

函數式程式設計

函數式程式設計意味著建立和使用函數作為主要構建塊。在這種方法中,函數可以作為參數傳遞給其他函數或作為結果返回。這種思維方式可以讓程式碼編寫變得有條理、有效率。

一流的功能

JavaScript 將函數視為「一等公民」。這意味著函數是對象——一種特定類型的對象,可以分配給變數、作為參數傳遞並在不同的上下文中使用,例如數字或字串。

範例

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

// Dodavanje svojstva funkciji
pozdrav.jezik = 'srpski';
console.log(pozdrav.jezik); // Ispisuje 'srpski'
登入後複製

將函數分配給變數

在 JavaScript 中,可以將函數賦值給變數:

const kvadrat = function(x) {
  return x * x;
};
console.log(kvadrat(5));  // Ispisuje 25
登入後複製

將函數作為參數傳遞

一流函數的主要功能之一是能夠將它們作為參數傳遞給其他函數:

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?'
登入後複製

高階函數

高階函數是接受其他函數作為參數或將它們作為結果傳回的函數。這使得程式碼編寫更加優雅和簡潔。例如map、filter和reduce.

方法

地圖方法

map 透過對現有數組的每個元素呼叫函數來建立一個新數組:

無地圖方法:

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]
登入後複製

使用地圖方法:

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

過濾法

過濾器建立一個新數組,其中包含滿足給定條件的所有元素:

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 } ]
登入後複製

減少方法

reduce 對數組的每個成員執行函數並傳回唯一值:

reduce 範例:

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

建立高階函數

想像一下如果 JavaScript 沒有內建的 map 方法。我們可以自己創建:

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]
登入後複製

結論

高階函數讓 JavaScript 程式碼具有靈活性和簡單性。透過使用這些功能,我們的程式碼變得更加簡潔、有組織、可維護。

以上是理解 JavaScript 中的高階函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板