Что такое замыкание

Как использование замыкание, чтобы написать код для счетчика без глобальной переменной?

Замыкание это возвращенная функция с известными (свободными) переменными которые ее окружают. Пример:


 
<script>
function zzz() {
    var count = 0;
   
    function counter(){
        return count++;
    }
    return counter;
}
 
var amazing = zzz();
 
alert (amazing());
alert (amazing());
alert (amazing());
 
</script>

 

Сначала мы инициализируем локальную переменную в функции zzz задавая ей начальное состояние 0. И возвращаем из функции функцию которая должна прибавлять единицу.

Когда мы будем вызывать эту возвращенную функцию из разных мест кода, на удивление переменная count будет сохранять свое новое значение, а не сбрасывать его в 0, как обычно просиходит с локальными переменными в функциями. Почему?

Здесь действует правило Замыкание. После возврата функции, мы в переменной amazing имеем эту возвращенную функцию И переменные окружения, а именно count. Эта переменная будет сохранять свое новое состояние уже в переменной amazing, но не будет являтся глобальной.

 


Другие ответы по вопросу Что такое замыкание


Имя:*
E-Mail:
Напишите ваш ответ:

16

QQpedia.ru - cамые интересные вопросы