Wenn Sie eine Funktion zwischen Klammern einschließen, wird diese Funktion als Funktionsausdruck .
Dies geschieht, weil die Gruppierungsoperator (die Klammern), kann nur auswerten Ausdrücke .
Wenn keine Klammern verwendet werden, wird dies als Funktionsdeklaration und verursacht einen Syntaxfehler, da der Funktionsname no optional für Funktionsdeklarationen.
(function(arg){
alert(arg); // alerts test
})("test");
Im obigen Beispiel wird der Funktionsausdruck automatisch ausgeführt, wobei ein Argument übergeben wird.
Dieses Muster wird häufig von jQuery-Plugins verwendet, da jQuery in noConflict Modus, die $
globale Variable wird nicht erstellt, daher wird das globale jQuery-Objekt als Argument dieser anonyme Funktion und innerhalb dieser Funktion können Sie frei auf sie verweisen als $
(das empfangene Argument).
Denken Sie daran, dass auch der Funktionskontext (die this
Schlüsselwort) in selbstausführenden Funktionsausdrücken, die wie im obigen Beispiel aufgerufen werden, beziehen sich immer auf das Objekt Global.
Ausführlichere Informationen über die Unterschiede zwischen Funktionsausdrücken und Funktionsdeklarationen finden Sie in den folgenden Ressourcen: