Higher-Order Function (Hàm bậc cao) trong JavaScript là một khái niệm quan trọng trong lập trình hàm, cho phép bạn viết mã linh hoạt và tái sử dụng. Một hàm được coi là hàm bậc cao nếu nó có ít nhất một trong các đặc điểm sau:
Hàm bậc cao cho phép bạn:
function greet(name) { return `Hello, ${name}!`; } function greetUser(greetingFunction, userName) { return greetingFunction(userName); } console.log(greetUser(greet, 'Alice')); // Kết quả: Hello, Alice!
Trong ví dụ trên, greetUser
là một hàm bậc cao vì nó nhận greet
như một đối số.
function createMultiplier(multiplier) { return function(x) { return x * multiplier; }; } const double = createMultiplier(2); const triple = createMultiplier(3); console.log(double(5)); // Kết quả: 10 console.log(triple(5)); // Kết quả: 15
Hàm createMultiplier
là một hàm bậc cao vì nó trả về một hàm khác, x * multiplier
.
JavaScript cung cấp nhiều hàm bậc cao thông qua các phương thức mảng như map()
, filter()
, và reduce()
.
map()
: Nhận một hàm làm đối số và áp dụng hàm đó lên từng phần tử của mảng, trả về một mảng mới.const numbers = [1, 2, 3, 4]; const doubled = numbers.map(num => num * 2); console.log(doubled); // Kết quả: [2, 4, 6, 8]
filter()
: Nhận một hàm làm đối số và trả về một mảng mới chứa các phần tử mà hàm đó trả về true
.const numbers = [1, 2, 3, 4]; const evens = numbers.filter(num => num % 2 === 0); console.log(evens); // Kết quả: [2, 4]
reduce()
: Nhận một hàm làm đối số và sử dụng nó để tổng hợp các phần tử của mảng thành một giá trị duy nhất.const numbers = [1, 2, 3, 4]; const sum = numbers.reduce((acc, num) => acc + num, 0); console.log(sum); // Kết quả: 10
Sử dụng hàm bậc cao sẽ giúp bạn viết mã rõ ràng và hiệu quả hơn, đặc biệt là trong lập trình hàm.