클로저에 대한 게시물을 읽고 있었으며 어디에서나 이것을 보았지만 어떻게 작동하는지에 대한 명확한 설명은 없습니다.
// 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 새로운 익명 함수를 만든 다음 실행할 것입니다. 그런 다음이 간단한 코드가 작동해야합니다 (그렇습니다).
(function (msg){alert(msg)})('SO');
내 질문은 여기서 어떤 종류의 마술이 일어나는가? 나는 내가 쓸 때 다음과 같이 생각했다.
(function (msg){alert(msg)})
그러면 함수 ""(msg) ...와 같이 이름이 지정되지 않은 새로운 함수가 생성됩니다.
그런데 왜 이것이 작동하지 않습니까?
(function (msg){alert(msg)});
('SO');
왜 같은 줄에 있어야합니까?
게시물을 알려주거나 설명해 주시겠습니까?
(function (msg){alert(msg)})('SO');
은 완전히 자체적으로 작동합니다. 이전에 게시 한 다른 익명 함수와는 아무런 관련이 없습니다. 그것들은 완전히 별개의 익명 기능입니다. 익명 함수는 이름이없고 나중에 참조 할 수 없기 때문에 즉시 호출해야합니다.