Показать сообщение отдельно
  #7 (permalink)  
Старый 19.06.2011, 14:06
Аватар для SlavaPav
Аспирант
Отправить личное сообщение для SlavaPav Посмотреть профиль Найти все сообщения от SlavaPav
 
Регистрация: 25.02.2010
Сообщений: 57

Можешь поискать "Отложенное определение функции" или "Самоопределяемая функция".
Флэнагана читал? Мне хватило его объяснений не тему замыканий. Могу попытаться объяснить.
function some_func() {
    var result = (feature_detect) ? true : false;
    
    /*
     * Так как область видимости у функций в javascript лексическая,
     *  то данная анонимная функция сохраняет 
     * цепочку областей видимости в которой она определена. 
     * То есть при вызове кода данной функции, неважно как она сохранена и
     * под каким именем, она будет иметь доступ к переменным из объемлющей функции. 
     * Вот и замыкание. Имя функции значения не
     * имеет, важно то, что во внешний код передается ссылка на вложенную анонимную функцию, 
     * и т. к. функция определена внутри
     * другой функции, она будет иметь доступ ко всем переменным объемлющей функции.
     */
    some_func = function() {
        if (result) {
            
        }
    };
    
    some_func();
}
Ответить с цитированием