如果您正在學習 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中文網其他相關文章!