402 Stimmen

Erläutern Sie die Syntax der gekapselten anonymen Funktion

Zusammenfassung

Können Sie die Gründe für die Syntax für gekapselte anonyme Funktionen in JavaScript erklären? Warum funktioniert das? (function(){})(); aber das ist nicht der Fall: function(){}(); ?


Was ich weiß

In JavaScript erstellt man eine benannte Funktion wie diese:

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

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

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

Sie können einen Codeblock kapseln, indem Sie eine anonyme Funktion erstellen, sie in Klammern einschließen 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 potenziell kollidierenden Variablen vollgestopft wird - wie im Fall von Greasemonkey-Skripten, jQuery-Plugins usw.

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


Was ich nicht verstehe

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

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

Können Sie mir das erklären?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X