Dwa sposoby natychmiastowego wywołania funkcji anonimowej (funkcja (d) {} ()); i (funkcja (x) {}) (); [duplikować]
Możliwy duplikat:
Czy są „(funkcja () {}) ()” i „(funkcja () {} ())” funkcjonalnie równa w JavaScript?
Moje pytanie o te znaki specjalne, nie mogłem znaleźć dobrej odpowiedzi. (Czy ktoś wie, jak z nimi szukać?)
Widziałem dwa wzorce do natychmiastowego wywoływania anonimowych funkcjihttp://jsfiddle.net/ukqS8/1/
<code>(function(d) { document.write(d*2); })(3); </code>
i
<code>(function(x) { document.write(x*2); }(3)); </code>
Różnica polega na umieszczeniu (3): wewnątrz lub na zewnątrz nawiasu zamykającego.
Znalazłem tutaj dobre wyjaśnienie drugiego przypadku:
funkcja javascript vs. (function () {...} ());
co rozumiałem jakofunction(x) {...}
tworzy obiekt funkcji, (3) staje się jego argumentem, a enclosing () mówi interpreterowi, że to, co jest w środku, jest instrukcją.
W pierwszym przypadku wydaje się(function(d) {...})
instrukcja, która w jakiś sposób jest również funkcją, a następnie stosuje się (3) do tej instrukcji / funkcji.
Tak więc oba wydają się wykonywać w ten sam sposób. Czy jest tu naprawdę różnica? Zakres (wątpię w to)? Czy preferowana jest którakolwiek z tych opcji?