Mögliche Duplizieren:
How do JavaScript closures work?Was ist der Zweck der Übergabe von Argumenten an anonyme Funktionen auf diese Weise?
Ich spiele herum mit den Google Closure Compiler, in Random-Code setzen, um zu sehen, was es tun würde.
Es schrieb einer meiner Funktionen so etwas wie folgt aussehen:
(function(msg) { console.log(msg); })("Hello World!");
Wo es scheint, dass "Hello World"
das Argument als msg
auf die anonyme Funktion übergeben ist es vorangeht. Ich war es für einen Moment suchen, und hatte gedacht, dass ich etwas ähnliches in jQuery Plugins gesehen hatte, das wie etwas aussehen:
(function($) {
...
})(jQuery);
die jetzt mehr Sinn für mich, im Rahmen von Konflikten mit $
macht. Aber was ist der Hauptgrund oder der Grund dafür, Argumente in eine anonyme Funktion wie diese zu übertragen? Warum würden Sie die Argumente nicht einfach als Variablen innerhalb der Funktion definieren? Gibt es einen Leistungs - oder Flexibilitätsvorteil beim Schreiben von Funktionen wie diesem?
Für diesen spezifischen Code gibt es keinen wirklichen Grund. Sie könnten einfach 'console.log (" hallo ");'. In der Regel werden jedoch einige lokale Variablen erstellt, auf die nur einige Funktionen zugreifen können, die intern erstellt und exportiert werden. –
Ich wäre gespannt auf Ihren Originalcode, der zu diesem Formular geführt hat. Ich würde wetten, wenn ADVANCED_OPTIMIZATIONS aktiviert wäre, würde es die Funktion ganz loswerden. –
@ user1689607 die Funktion war ein bisschen anders und viel länger.Ich habe es kurz gemacht, um es auf SO sauber zu machen. Mehr Fragen über das Konzept als dieses spezifische Beispiel –