Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как понять фрагмент кода вида (function(){}()) (https://javascript.ru/forum/misc/52251-kak-ponyat-fragment-koda-vida-function-%7B%7D.html)

xtfkpi 10.12.2014 09:47

Как понять фрагмент кода вида (function(){}())
 
Доброго дня, уважаемые js-гуру
анализируя api одной из библиотек в примере обнаружил конструкцию вида:
(
function(d, s, id){
    op1;
    op2; 
   ...
}(document, 'script', 'jssdk')
);
подскажите, пожалуйста, что вообще происходит здесь, зачем скобки оборачивают определение функции и что за последовательность в конце "(document, 'script', 'jssdk')". и вопрос более общего плана, есть ли инструменты которые помогают понять зашифрованные конструкции подобного вида?

nerv_ 10.12.2014 10:31

это шаблон модуль
http://learn.javascript.ru/function-...�а-месте

krutoy 10.12.2014 11:55

xtfkpi,
Это не зашифрованная конструкция, это обычная хрень создающая замыкание. В других яп это выглядит типа
(let((d documеnt) (s script)(id "foo")) (...делаем что-то...))

Он просто создал локальный неймспейс, в данном случае.
только, в данном случае, весьма сомнительно применение этого. Скорей всего, это написано только ради того, чтобы писать короткие имена вместо длинных.

XelaNimed 10.12.2014 15:00

Это создание анонимной функции и ее последующий вызов.
(function(a, b, c){
 return (a+b) * c; // вернет 9
})(1,2,3);

Вся анонимная функция оборачивается в круглые скобки и после, опять же в круглых скобках передаются аргументы. Возможен вызов и без аргументов. Более подробно описано здесь.
P.S.: кстати, в названии темы и в приведенном Вами примере ошибка.


Часовой пояс GMT +3, время: 07:44.