Có phải hàm trả về hàm của hàm kiểu mẫu có tên trong JavaScript không?


14

Tôi sử dụng mẫu này khá thường xuyên trong JavaScript. Đây là một ví dụ:

const comments = [
  { text: 'Hello', id: 1 },
  { text: 'World', id: 4 },
];

const byId = id => element => element.id === id;

const comment = comments.find(byId(1));

Đôi khi, mẫu này có thể làm cho mã của chúng ta có thể đọc và mô-đun. Mô hình này được gọi là gì?

Câu trả lời:


20

Chúng được gọi là các hàm bậc cao hơn.

Hàm bậc cao hơn là hàm có thể lấy hàm khác làm đối số hoặc trả về hàm làm kết quả. - Các hàm bậc cao hơn trong JavaScript của M. David Green


Và bạn kết thúc với một đóng cửa.
Thomas Junk

3
JavaScript là ngôn ngữ trong đó tất cả các chức năng là hạng nhất. Có nghĩa là bạn có thể chuyển chúng xung quanh trong các biến như bất kỳ giá trị nào khác. Một bao đóng là một hàm có quyền truy cập vào "phạm vi từ vựng" kèm theo trong đó nó được định nghĩa. Hoạt động giống như cách các phương thức đối tượng có quyền truy cập vào các biến trạng thái của đối tượng.
candied_orange

3
Trong trường hợp cụ thể này, anh ta đang giới thiệu 2 đối số xuống còn 1.
user949300
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.