Erklären Sie die gekapselte anonyme Funktion syntax

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?

Ich denke, all diese abwechslungsreiche notation und Möglichkeiten, definieren/Einstellung/Aufruf von Funktionen, die die meisten verwirrend Teil zunächst die Arbeit mit javascript. Menschen neigen dazu, nicht über Sie sprechen entweder. Es ist nicht eine betonte Stelle in Führungen oder blogs. Es weht meinem Kopf, weil es ist etwas verwirrend für die meisten Menschen, und Menschen fließend in js muss es zu Durchlaufen haben. Es ist wie das leeren Tabu Realität, die nie gesprochen wird.
Lesen Sie auch über die Zweck dieses Konstrukts, oder überprüfen Sie ein (technischer) Erläuterung (auch hier). Für die Platzierung der Klammern, siehe diese Frage über Ihre Lage.
OT: Für diejenigen, die wissen wollen, wo diese anonyme Funktionen werden oft benutzt, Lesen Sie bitte adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html
Das ist ein typischer Fall von Sofort Aufgerufen Funktion Ausdrücken (IIFE).

InformationsquelleAutor Premasagar | 2009-10-27

Schreibe einen Kommentar