Erläutern Sie die Syntax der gekapselten anonymen Funktion

Zusammenfassung

Können Sie erklären, die Logik hinter der syntax gekapselt anonyme Funktionen in JavaScript? Warum funktioniert das: (function(){})(); aber nicht: function(){}();?


Was ich weiß,

In JavaScript erstellt man eine benannte Funktion wie diese:

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

Können Sie auch eine anonyme Funktion und weisen Sie es einer Variablen:

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

Können Sie Kapseln sich ein block von code, indem eine anonyme Funktion, dann wickeln Sie es in eckige Klammern und ihn sofort auszuführen:

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

Dies ist nützlich bei der Erstellung von modularisierten Skripte, um zu vermeiden, überladen den aktuellen Bereich, oder den globalen scope, mit potenziell widersprüchlichen Variablen - wie im Fall von Greasemonkey scripts, jQuery plugins, etc.

Nun verstehe ich, warum das funktioniert. Die Klammern umschließen den Inhalt und setzen Sie nur das Ergebnis (ich bin sicher, es gibt eine bessere Weise, das zu beschreiben), wie mit (2 + 2) === 4.


Was ich nicht verstehe

Aber ich verstehe nicht, warum dies nicht funktioniert ebenso gut:

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

Können Sie erklären, dass Sie für mich?

InformationsquelleAutor der Frage Premasagar | 2009-10-27

Schreibe einen Kommentar