Ich habe einige Posts über Schließungen gelesen und dies überall gesehen, aber es gibt keine klare Erklärung, wie es funktioniert - jedes Mal, wenn mir nur gesagt wurde, ich solle es 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 eine neue anonyme Funktion erstellen und diese dann ausführen werden. Danach sollte dieser einfache Code funktionieren (und das tut er auch):
(function (msg){alert(msg)})('SO');
Meine Frage ist, welche Art von Magie hier passiert? Ich dachte das, als ich schrieb:
(function (msg){alert(msg)})
dann würde eine neue unbenannte Funktion wie die Funktion "" (msg) erstellt ...
aber warum funktioniert das dann nicht?
(function (msg){alert(msg)});
('SO');
Warum muss es in der gleichen Zeile sein?
Könnten Sie mir bitte einige Beiträge zeigen oder mir eine Erklärung geben?
(function (msg){alert(msg)})('SO');
funktioniert komplett von alleine. Es hat nichts mit der anderen anonymen Funktion zu tun, die Sie zuvor gepostet haben. Dies sind zwei völlig getrennte anonyme Funktionen. Sie müssen eine anonyme Funktion sofort aufrufen, da sie keinen Namen hat und anschließend nicht mehr referenziert werden kann.