Что за конструкция? (из jQuery)
Код фреймворка jQuery выглядит так:
(function(){ // Тут много-много кода })(); Может кто-нибудь объяснить, зачем нужна конструкция вида (function() {})(); ? |
Это автоматически запускаемое замыкание.
Передать параметры в JavaScript функцию можно используя конструкцию (функция)(параметры), например: (alert)([32,31]); Если вместо alert мы напишем анонимную функцию, то она тоже запустится. Причем сразу, как только будет объявлена. Вообще можно запустить объявленную анонимную функцию с параметрами, вот так: var my = function() { alert('hi!'); // Вызываем функцию без параметров }(); Но если написать просто function() {...}();, без присваивания какой-нибудь переменной (var my, напр.) - будет синтаксическая ошибка. Поэтому используют скобки: (function() { ... })(); Про замыкания вообще и для чего они нужны читайте в этой статье. |
Это определение анонимной функции и сразу же её выполнение...
Это не из jquery, а из обычного джаваскрипта, просто вы в другом ничём видимо не копались :) |
Спасибо большое за пояснение. Только я опять не пойму (сейчас задам наверно дурацкий вопрос :))
В чём смысл сразу же выполнять эту анонимную функцию? Я понимаю смысл в обычном замыкании, но в этой конструкции пока не вижу. |
Yojik,
Объявленные внутри такой функции переменные будут "приватными" и не будут доступны "извне". |
Ага! Всё понял. Спасибо!
|
Цитата:
(function test(){ intest = 9; })(); alert(intest); Выводит 9. Почему недоступны извне? Если добавить var - то, понятно что переменная станет локальной равно как и в обычной функции (не в замыкании). Может Вы что-то другое имели ввиду говоря "не будет доступной извне"? |
Часовой пояс GMT +3, время: 07:21. |