Hãy định nghĩa một Higher-Order Function?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
671 lượt xem
Javascript middle

Một higher-order function là một hàm nhận một hoặc nhiều hàm làm đối số, hàm này sử dụng để hoạt động trên một số dữ liệu và / hoặc trả về một hàm khác. Các higher-order functions có nghĩa là trừu tượng hóa một số hoạt động được thực hiện lặp đi lặp lại.

Ví dụ cổ điển về điều này là map, nhận một mảng và một hàm làm đối số, sau đó map sử dụng hàm này để biến đổi từng item trong mảng, trả về một mảng mới với dữ liệu đã biến đổi. Các ví dụ phổ biến khác trong JavaScript là forEach, filterreduce.

Một higher-order function không nhất thiết chỉ được thao tác với các mảng mà còn có nhiều trường hợp sử dụng để trả về một hàm từ một hàm khác, ví dụ như Function.prototype.bind trong JavaScript.

Map

Giả sử chúng ta có một mảng các tên mà chúng ta cần chuyển đổi mỗi chuỗi thành chữ hoa.

const names = ['irish', 'daisy', 'anna'];

tiếp theo:

const transformNamesToUppercase = function(names) {
   const results = [];
   for (let i = 0; i < names.length; i++) {
      results.push(names[i].toUpperCase());
   }
   return results;
};
transformNamesToUppercase(names); // ['IRISH', 'DAISY', 'ANNA']

Sử dụng .map(transformerFn) làm cho mã ngắn hơn và dễ khai báo hơn.

const transformNamesToUppercase = function(names) {
   return names.map(name => name.toUpperCase());
};
transformNamesToUppercase(names); // ['IRISH', 'DAISY', 'ANNA']
{{login.error}}