Warum müssen Sie eine anonyme Funktion in derselben Zeile aufrufen?

Las ich einige Beiträge über Schließungen und sah überall, aber es gibt keine klare Erklärung, wie es funktioniert - jedes mal wenn ich gerade gesagt, es zu benutzen...:

//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, ich sehe, dass wir neue anonyme Funktion und führen Sie es. So nach, dass dieser einfache code sollte funktionieren (und tut es):

(function (msg){alert(msg)})('SO');

Meine Frage ist, welche Art von Magie ist hier passiert? Ich dachte, dass, wenn ich schrieb:

(function (msg){alert(msg)})

dann eine neue Unbenannte Funktion, die entstehen würden, wie die Funktion ""(msg) ...

dann aber, warum funktioniert das nicht?

(function (msg){alert(msg)});
('SO');

Wieso braucht es in der gleichen Zeile?

Könnten Sie bitte zeigen Sie mir einige Beiträge oder geben Sie mir eine Erklärung?

InformationsquelleAutor der Frage palig | 2009-07-16

Schreibe einen Kommentar