首頁  >  文章  >  web前端  >  Javascript中的高階函數是什麼

Javascript中的高階函數是什麼

Patricia Arquette
Patricia Arquette原創
2024-10-22 06:21:31965瀏覽

What is higher-order function in Javascript

什麼是高階函數?

高階函數 是一個符合下列任一條件的函數:

  • 接受一個或多個函數作為參數
  • 傳回一個函數作為其結果

它是函數式程式設計的基礎之一。

JS 中高階函數的範例:

//map() and reduce()
let nums = [1, 2, 3, 4]
let addOne = nums.map((i) => i+1) // [2,3,4,5]
let combined = nums.reduce((res, cur) => res+=cur, 0) // 10

為什麼要使用高階函數?

簡化重複模式(抽象)和可重複使用性

假設您正在處理數字列表,並且需要執行不同的操作(例如,加倍、平方或添加常數)。您可以使用高階函數抽象行為,而不是編寫多個類似的迴圈。

//normal version
let numbers = [1, 2, 3, 4]; 

const squares = (nums) => {
    let result = [];
    for(let i of nums) {
        result.push(i*i);
    }
    return result;
}

const addThree = (nums) => {
    let result = [];
    for(let i of nums) {
        result.push(i+3);
    }
    return result;
}
squares(numbers) // [1,4,9,16]
addThree(numbers) // [4,5,6,7]
//higher-order function version
let numbers = [1, 2, 3, 4]; 

const applyAll = (func, nums) => {
    let result = [];
    for(let i of nums) {
        result.push(func(i));
    }
    return result;
}

applyAll((i) => i*i, numbers) // [1,4,9,16]
applyAll((i) => i+3, numbers) // [4,5,6,7]

使用一個通用的高階函數applyAll,您可以處理多個操作並避免重複的程式碼。

從小函數建立複雜邏輯(可組合性)

透過組合小函數,您可以建立更複雜的行為。例如,如果您想先過濾數字列表以僅獲得偶數,然後將它們加倍,然後將所有數字加在一起,您可以連結高階函數。

//you can chain filter -> map -> reduce
let numbers = [1, 2, 3, 4];
let result = numbers
    .filter(i => i%2===0)
    .map(i => i*2)
    .reduce((res, cur) => res+=cur, 0); // 12

每個步驟(過濾、映射、歸約)都由高階函數處理,使流程更加模組化、更易於維護並且可單獨測試。


就是這樣!感謝您閱讀本文。下次見!

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn