Powiel możliwe:
How do JavaScript closures work?Jaki jest cel przekazywania w ten sposób argumentów do anonimowych funkcji?
Grałem około z Google Closure Compiler, wprowadzenie kodu losowego, aby zobaczyć, co by to zrobić.
on przepisał jedną z moich funkcji wyglądać mniej więcej tak:
(function(msg) { console.log(msg); })("Hello World!");
przypadku gdy okazuje się, że "Hello World"
jest argument przekazany jako msg
do anonimowej funkcji poprzedzającym go. Byłem patrząc na nią przez chwilę, a myślałem, że widziałem coś podobnego w wtyczek jQuery, które wyglądają mniej więcej tak:
(function($) {
...
})(jQuery);
Która teraz ma większy sens dla mnie, w zakresie konfliktów z $
. Ale jaki jest główny powód lub cel przekazywania argumentów w anonimową funkcję taką jak ta? Dlaczego po prostu nie zdefiniowałbyś argumentów jako zmiennych w funkcji? Czy istnieje jakaś wydajność lub elastyczność przy pisaniu takich funkcji?
Dla tego konkretnego kodu nie ma prawdziwego powodu. Możesz po prostu zrobić 'console.log (" hello ");'. Zazwyczaj jednak tworzy się pewne zmienne lokalne, które są dostępne tylko dla niektórych funkcji, które są tworzone wewnątrz i eksportowane. –
Chciałbym zobaczyć Twój oryginalny kod, który doprowadził do tego formularza. Założę się, że gdyby włączono opcję ADVANCED_OPTIMIZATIONS, całkowicie pozbyłbym się tej funkcji. –
@ user1689607 funkcja była nieco inna i znacznie dłuższa.Zrobiłem to krótko, aby zrobić to na SO. Więcej zastanawiam się nad tym pojęciem niż ten konkretny przykład. –