Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.12.2014, 09:47
Новичок на форуме
Отправить личное сообщение для xtfkpi Посмотреть профиль Найти все сообщения от xtfkpi
 
Регистрация: 14.10.2014
Сообщений: 5

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

Последний раз редактировалось xtfkpi, 10.12.2014 в 09:55.
Ответить с цитированием
  #2 (permalink)  
Старый 10.12.2014, 10:31
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

это шаблон модуль
http://learn.javascript.ru/function-...а-месте
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 10.12.2014, 11:55
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

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

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

Последний раз редактировалось krutoy, 10.12.2014 в 11:59.
Ответить с цитированием
  #4 (permalink)  
Старый 10.12.2014, 15:00
Аватар для XelaNimed
Интересующийся
Отправить личное сообщение для XelaNimed Посмотреть профиль Найти все сообщения от XelaNimed
 
Регистрация: 07.02.2010
Сообщений: 23

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$('my').load(); Как сделать, чтобы это заработало mycoding Общие вопросы Javascript 25 02.10.2016 23:43
Объект внутри прототипа StSpirit Общие вопросы Javascript 81 03.12.2013 03:34
Как доступится к свойствам созданной коллекции? assd18 Backbone.js 8 01.12.2013 20:37
Автоматический пересчёт при смене значения. sergeos Работа 3 05.02.2013 13:44
как изментить функцию прямо из кода!! magavnuk Events/DOM/Window 2 27.12.2009 10:33