高階函數 是一個符合下列任一條件的函數:
它是函數式程式設計的基礎之一。
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中文網其他相關文章!