Анонимные обёртки в 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, время: 11:15. |