JavaScript cũng là ngôn ngữ lập trình hàm. Những gì bạn có ở đây là «hàm bậc cao», một hàm có chức năng như một tham số. Các hàm bậc cao hơn là đồng bộ (nhưng xem lưu ý bên dưới).
Nguồn:
map()
là một ví dụ điển hình của một hàm bậc cao. Nó có một hàm và áp dụng nó cho tất cả các phần tử của một mảng. Định nghĩa âm thanh rất «chức năng». Chức năng này cũng không được cung cấp bởi Node. Tài liệu được ghi bởi MDN Array.prototype.map() và được chỉ định bởi ECMAScript 5.1.
Để trả lời câu hỏi của bạn: Có, doSomething(nodeIDs)
được gọi là sau tất cả các yếu tố đã được áp dụng.
Lưu ý: Hàm bậc cao là khái niệm lập trình hàm. JavaScript có chức năng, nhưng cũng được đặt sâu trong tính thực tiễn của việc thực thi mã bên trong trình duyệt hoặc trên máy chủ. Tôi sẽ nói rằng ví dụ
setTimeout()
không phải là một hàm bậc cao hơn ngay cả khi nó có chức năng như một tham số vì
setTimeout()
không thực sự là chức năng thuần túy bởi vì nó sử dụng thời gian. Chức năng tinh khiết là vô tận. Ví dụ kết quả của
map()
không phụ thuộc vào thời gian. Và đó là những gì câu hỏi này thực sự là về. Nếu một cái gì đó không phụ thuộc vào thời gian bạn thực hiện nó đồng bộ. Đã giải quyết được sự cố.
Cảm ơn Simon đã thử thách định nghĩa hàm bậc cao hơn trong JavaScript.
$ ở đây là gì? bản đồ có chức năng gọi lại để áp dụng cho từng thành viên của danh sách, chứ không phải gọi lại khi hoàn tất quá trình lặp lại. – chovy
Cảm ơn chovy.Đối với $, tôi đã chỉ thử nghiệm với mô-đun nút-jquery và không bận tâm để chỉnh sửa điều đó. – bonchef