Tôi đã đọc một số bài viết về việc đóng cửa và thấy điều này ở khắp mọi nơi, nhưng không có lời giải thích rõ ràng về cách thức hoạt động của nó - mỗi khi tôi được yêu cầu sử dụng nó ...:
// Create a new anonymous function, to use as a wrapper
(function(){
// The variable that would, normally, be global
var msg = "Thanks for visiting!";
// Binding a new function to a global object
window.onunload = function(){
// Which uses the 'hidden' variable
alert( msg );
};
// Close off the anonymous function and execute it
})();
Ok tôi thấy rằng chúng ta sẽ tạo chức năng ẩn danh mới và sau đó thực hiện nó. Vì vậy, sau đó mã đơn giản này sẽ hoạt động (và nó):
(function (msg){alert(msg)})('SO');
Câu hỏi của tôi là loại phép thuật xảy ra ở đây? Tôi nghĩ rằng khi tôi viết:
(function (msg){alert(msg)})
sau đó, một chức năng chưa được đặt tên mới sẽ được tạo như chức năng "" (thông điệp) ...
Nhưng tại sao điều này không làm việc?
(function (msg){alert(msg)});
('SO');
Tại sao nó cần phải nằm trong cùng một dòng?
Bạn có thể vui lòng chỉ cho tôi một số bài viết hoặc cho tôi một lời giải thích?
(function (msg){alert(msg)})('SO');
hoạt động hoàn toàn trên chính nó. Nó không có gì để làm với chức năng ẩn danh khác mà bạn đã đăng trước đó. Đó là hai chức năng ẩn danh hoàn toàn riêng biệt. Bạn phải gọi một hàm ẩn danh ngay lập tức vì nó không có tên và không thể được tham chiếu sau đó.