Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2011, 18:20
Новичок на форуме
Отправить личное сообщение для lkart Посмотреть профиль Найти все сообщения от lkart
 
Регистрация: 06.07.2011
Сообщений: 3

Анонимные обёртки в JavaScript
Читаю http://bonsaiden.github.com/JavaScri...unction.scopes и не могу понять кое-что.

Вот показан пример:

(function() {
   // самостоятельно созданное "пространство имён"

   window.foo = function() {
       // открытое замыкание
   };

})(); // сразу же выполнить функцию     <--- вот тут


Зачем вообще после фигурных скобок ставятся еще одни двойные круглые скобки?
Вот еще пример кода:

( // разобрать функцию внутри скобок
function() {}
) // и вернуть объект функции
() // вызвать результат разбора


Написано также, что "безымянные функции являются выражениями; поэтому, чтобы вы имели возможность их выполнить, они сперва должны быть разобраны."

В одном случае "сразу же выполнить функцию", в другом "вызвать результат разбора", так зачем конкретно ставятся эти вторые скобки, как это работает или где про это можно подробнее почитать?
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2011, 18:28
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

(function(){alert("Меня вызвали!")})()


Это анонимная ф-ция, которая создаётся и тут же вызывается.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2011, 18:34
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Скобки возвращают результат выражения внутри них. В данном случае результатом будет анонимная ф-ция.
function(){alert("Меня вызвали!")} //это анонимная ф-ция

код, приведённый мной выше, аналогичен следующему:
func= function(){alert("Меня вызвали!")};
(func)();
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2011, 18:37
Новичок на форуме
Отправить личное сообщение для lkart Посмотреть профиль Найти все сообщения от lkart
 
Регистрация: 06.07.2011
Сообщений: 3

Спасибо за ответ, теперь понятно.

Прочитал пару учебников для начинающих по js, но именно такие конструкции в них не рассматривались.
Ответить с цитированием
  #5 (permalink)  
Старый 06.07.2011, 18:40
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Почитайте про замыкания. Это в продолжение темы.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2011, 18:45
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Эти скобки там не просто так, они передают параметры в функцию:
(function(msg){alert(msg)})("Меня вызвали!")
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 06.07.2011, 18:57
Новичок на форуме
Отправить личное сообщение для lkart Посмотреть профиль Найти все сообщения от lkart
 
Регистрация: 06.07.2011
Сообщений: 3

Сообщение от Aetae Посмотреть сообщение
Эти скобки там не просто так, они передают параметры в функцию
Да, спасибо, я разобрался. Мне была не знакома сама конструкция, поэтому скобки и удивили.
В учебниках, как правило, рассматривают только обыкновенные:
function foo() {}
foo();

или
var foo = function() {};


А тут сталкиваешься с какой нибудь конструкцией посложнее и остаешься в недоумении.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Книга] Stoyan Stefanov, Javascript Patterns Dmitry A. Soshnikov Учебные материалы 20 13.08.2013 11:37
javascript вставки в vrml сцены. Передать событие из броузера Proletariy Javascript под браузер 0 10.05.2011 12:26
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24