Higher-Order Function Là Gì?
Trong lập trình, một higher-order function (hàm bậc cao) là một hàm có thể làm một trong những điều sau:
- Nhận một hoặc nhiều hàm làm đối số.
- Trả về một hàm khác.
Higher-order functions rất phổ biến trong các ngôn ngữ lập trình hàm (functional programming languages) và cũng được sử dụng rộng rãi trong JavaScript.
Ví Dụ về Higher-Order Function
1. Hàm Nhận Hàm Khác Làm Đối Số
Các hàm như map
, filter
, và reduce
trong JavaScript là các ví dụ điển hình của higher-order functions. Chúng nhận các hàm callback làm đối số.
-
Hàm
map
: Áp dụng một hàm lên mỗi phần tử của mảng và trả về một mảng mới với các giá trị được biến đổi.const numbers = [1, 2, 3, 4]; const doubled = numbers.map(num => num * 2); console.log(doubled); // Output: [2, 4, 6, 8]
-
Hàm
filter
: Áp dụng một hàm kiểm tra lên mỗi phần tử của mảng và trả về một mảng mới chỉ chứa các phần tử vượt qua bài kiểm tra.const numbers = [1, 2, 3, 4]; const evenNumbers = numbers.filter(num => num % 2 === 0); console.log(evenNumbers); // Output: [2, 4]
-
Hàm
reduce
: Áp dụng một hàm lên mỗi phần tử của mảng (từ trái sang phải) để giảm (reduce) nó thành một giá trị duy nhất.const numbers = [1, 2, 3, 4]; const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0); console.log(sum); // Output: 10
2. Hàm Trả Về Một Hàm Khác
Higher-order functions có thể trả về một hàm khác. Điều này rất hữu ích trong việc tạo ra các hàm có thể cấu hình hoặc các hàm nhà máy (factory functions).
-
Ví Dụ về Hàm Trả Về Hàm Khác:
function createMultiplier(multiplier) { return function(num) { return num * multiplier; }; } const double = createMultiplier(2); const triple = createMultiplier(3); console.log(double(5)); // Output: 10 console.log(triple(5)); // Output: 15
Tổng Kết
Higher-order functions là một phần quan trọng của lập trình hàm và cung cấp các công cụ mạnh mẽ để xử lý các hàm một cách linh hoạt và hiệu quả. Chúng cho phép bạn:
-
Truyền hàm làm đối số: Điều này cho phép bạn truyền các hành động cụ thể vào các hàm khác để thực thi, như trong
map
,filter
, vàreduce
. -
Trả về hàm: Điều này cho phép bạn tạo ra các hàm động và có thể cấu hình, giúp mã của bạn trở nên linh hoạt và tái sử dụng hơn.
Hiểu và sử dụng higher-order functions sẽ giúp bạn viết mã JavaScript sạch sẽ, hiệu quả và dễ bảo trì hơn.
Comments