2009-03-05 22 views

Trả lời

12

Kiểm tra phần giới thiệu trong phần này: http://jibbering.com/faq/faq_notes/closures.html. Nó có thể giúp bạn hiểu rõ hơn về việc bao đóng liên quan đến chức năng như thế nào.

Dưới đây là một tập hợp các ví dụ đóng cửa: http://www.javascriptkit.com/javatutors/closures2.shtml

Về cơ bản, gọi lại giống như một con trỏ hàm. Cái bit làm cho nó bị đóng, là khi hàm đó truy cập bất cứ thứ gì trong ngữ cảnh mà nó sống, giống như các biến bên ngoài nó. Khi điều đó xảy ra, hàm sẽ sử dụng các giá trị hiện tại của các biến (trái với việc sao chép chúng). Xem ví dụ 4.

+0

Ah vâng, điều đó làm rõ nó lên Mr. Fred. Cảm ơn bạn! :) – leeand00

4

Có một định nghĩa tốt đẹp của việc đóng cửa here:

A "đóng cửa" là một biểu hiện (thường là một chức năng) có thể có biến miễn phí cùng với một môi trường gắn kết các biến (tức " đóng "biểu thức".

Trong thực tế, điều đó có nghĩa đó là hàm có một số biến ẩn.

Gọi lại là ý tưởng cấp cao hơn. Nói chung, nó là một hàm được truyền xung quanh với ý định được gọi sau này. Trong JavaScript, các bao đóng thường được sử dụng như callbacks.

7

định nghĩa khác nhau:

Callback -

hàm hồi quy là mã thực thi được thông qua như là một cuộc tranh cãi với các mã khác.

Closure -

đóng cửa là một chức năng được đánh giá trong một môi trường có chứa một hoặc ràng buộc nhiều biến. Khi được gọi, hàm có thể truy cập các biến này.

-1

Tôi không thấy hai liên kết này có liên quan như thế nào? Một bao đóng mang các phần của một trạng thái cục bộ vào một hàm nào đó, suy nghĩ về nó khi đi qua tham chiếu.

Gọi lại có nghĩa là thông báo cho bạn về một số thay đổi nhất định và chuyển hướng chương trình. Việc đóng cửa có thể thay đổi trạng thái cục bộ nhưng bạn sẽ không bao giờ có được thời gian xử lý để xử lý điều đó, giống như bạn sẽ gọi lại.

+0

Có người nói với tôi cả hai có liên quan ở đây: http: // stackoverflow.com/questions/615642/does-this-fit-định nghĩa của bạn-of-a-callback/615752 # 615752 – leeand00

1

Gọi lại tùy thuộc vào biến ngữ cảnh hay còn gọi là biến liên kết (== trạng thái đối tượng) sẽ bị đóng. Nó sẽ là một hàm thuần túy, nếu không, khi nó chỉ mất các biến miễn phí (== tham số).

3

Nói cách đơn giản: gọi lại bằng cách sử dụng biến ngữ cảnh là đóng.

Các vấn đề liên quan