Анонимные обёртки в JavaScript
Читаю http://bonsaiden.github.com/JavaScri...unction.scopes и не могу понять кое-что.
Вот показан пример:
(function() {
// самостоятельно созданное "пространство имён"
window.foo = function() {
// открытое замыкание
};
})(); // сразу же выполнить функцию <--- вот тут
Зачем вообще после фигурных скобок ставятся еще одни двойные круглые скобки? Вот еще пример кода:
( // разобрать функцию внутри скобок
function() {}
) // и вернуть объект функции
() // вызвать результат разбора
Написано также, что "безымянные функции являются выражениями; поэтому, чтобы вы имели возможность их выполнить, они сперва должны быть разобраны." В одном случае "сразу же выполнить функцию", в другом "вызвать результат разбора", так зачем конкретно ставятся эти вторые скобки, как это работает или где про это можно подробнее почитать? |
(function(){alert("Меня вызвали!")})()
Это анонимная ф-ция, которая создаётся и тут же вызывается. |
Скобки возвращают результат выражения внутри них. В данном случае результатом будет анонимная ф-ция.
function(){alert("Меня вызвали!")} //это анонимная ф-ция
код, приведённый мной выше, аналогичен следующему:
func= function(){alert("Меня вызвали!")};
(func)();
|
Спасибо за ответ, теперь понятно.
Прочитал пару учебников для начинающих по js, но именно такие конструкции в них не рассматривались. |
Почитайте про замыкания. Это в продолжение темы.
|
Эти скобки там не просто так, они передают параметры в функцию:
(function(msg){alert(msg)})("Меня вызвали!")
|
Цитата:
В учебниках, как правило, рассматривают только обыкновенные:
function foo() {}
foo();
или
var foo = function() {};
А тут сталкиваешься с какой нибудь конструкцией посложнее и остаешься в недоумении. |
| Часовой пояс GMT +3, время: 23:58. |