Erläutern Sie die Syntax der gekapselten anonymen Funktionen

Zusammenfassung

Können Sie die Gründe für die Syntax gekapselter anonymer Funktionen in JavaScript erläutern? Warum funktioniert das?(function(){})(); aber das tut nicht:function(){}();?

Was ich weiß

In JavaScript erstellt man eine benannte Funktion wie folgt:

function twoPlusTwo(){
    alert(2 + 2);
}
twoPlusTwo();

Sie können auch eine anonyme Funktion erstellen und einer Variablen zuweisen:

var twoPlusTwo = function(){
    alert(2 + 2);
};
twoPlusTwo();

Sie können einen Codeblock einkapseln, indem Sie eine anonyme Funktion erstellen, in eckige Klammern setzen und sofort ausführen:

(function(){
    alert(2 + 2);
})();

Dies ist nützlich, wenn Sie modularisierte Skripte erstellen, um zu vermeiden, dass der aktuelle Bereich oder der globale Bereich mit möglicherweise widersprüchlichen Variablen überladen wird - wie im Fall von Greasemonkey-Skripten, jQuery-Plugins usw.

Jetzt verstehe ich, warum das funktioniert. Die Klammern umschließen den Inhalt und zeigen nur das Ergebnis (ich bin sicher, es gibt einen besseren Weg, das zu beschreiben), wie zum Beispiel mit(2 + 2) === 4.

Was ich nicht verstehe

Aber ich verstehe nicht, warum das nicht genauso gut funktioniert:

function(){
    alert(2 + 2);
}();

Kannst du mir das erklären?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage