Nhờ this question Tôi hiểu cách một hàm có thể mất hai bộ ngoặc đơn và cách hàm có thể trả về một hàm khác sẽ kích hoạt ngay lập tức sau khi được trả về.Trong trường hợp nào bạn sẽ sử dụng một hàm trả về một hàm (Javascript) khác?
Điều tôi không hiểu là tại sao điều này là tốt để biết? Làm thế nào điều này có thể được áp dụng để giải quyết một vấn đề?
Các ví dụ về:
function add(x){
return function(y){
return x + y;
};
}
add(3)(4) === 7; // true
trình tốt - chắc chắn. Nhưng tại sao không chỉ viết nó như thế này?
function add(a, b) {
return a + b;
}
add(3, 4) === 7; // true
chức năng kiểm soát khi mã chạy, không chỉ là gì và ở đâu. điều này thuận tiện cho các cuộc gọi lại, quyền riêng tư và ghi nhớ cũng như các ứng dụng một phần. các ví dụ đơn giản sẽ không làm cho nhu cầu/năng lượng rất rõ ràng, nhưng hãy nhớ mô hình khi bạn cố gắng viết mã mà không sử dụng bất kỳ biến toàn cầu nào. cũng đọc về chức năng tinh khiết và lợi thế của họ để perf/testing/debug/etc – dandavis
bạn có thể thấy câu trả lời của tôi có thể là bạn có thể hiểu những gì bạn đang cố gắng để đạt được. –
'[1, 2, 3, 4, 5] .map (thêm (-1))' chỉ hoạt động trên phiên bản đầu tiên. bạn cũng có thể thực hiện tương tự bằng cách sử dụng 'add.bind (null, -1)' vào ngày 2, nhưng nó có xu hướng chạy chậm hơn so với sử dụng đóng và một hàm mới. – dandavis