пятница, 21 июня 2013 г.

Сокрытия - Замыкания

1) В JavaScript функции могут получать доступ к переменным, определенным выше них.
2) Функции могут также получать доступ к переменным определенным во внешней родительской функции, даже если та уже отработала при своем запуске,
то есть эти переменные и их значения просто продолжают существовать, поскольку функции - это просто объекты {}, поэтому они сохраняют в себе значения переменных, даже, если не работают в данный момент.
3) Поэтому функции могут возвращать через return внутренние функции, которые потом можно запускать отдельно.
4) Внутренние функции могут обновлять значения локальных переменных, определенных во внешней функции.

function makeSandwich() {
    var magicIngredient = "peanut butter";
    function make(filling) {
        return magicIngredient + " and " + filling;
    }
    return make("jelly");
}
makeSandwich(); // "peanut butter and jelly"

5) Функция может возвращать через return анонимную функцию, скрывая и сохраняя в ней локальные переменные и их значения.

function sandwichMaker(magicIngredient) {
    var a = 1;
    return function(filling) {
        return magicIngredient + " and " + filling + a;
    };
}

Комментариев нет:

Отправить комментарий