Объясните локальную переменную в функции
Здравствуйте! Есть код
function makeCounter() { var currentCount = 1; return function() { // (**) return currentCount++; }; } var counter = makeCounter(); // (*) // каждый вызов увеличивает счётчик и возвращает результат alert( counter() ); // 1 alert( counter() ); // 2 alert( counter() ); // 3 // создать другой счётчик, он будет независим от первого var counter2 = makeCounter(); alert( counter2() ); // 1 Не могу понять: 1) почему наращивается первый счетчик; 2) почему второй счетчик независим (т.е. значения снова начинаются с 1-цы) от первого. |
Цитата:
var counter = makeCounter(); В переменную counter вернется анонимная функция внутри makeCounter. У этой анонимной функции [[Scope]] ссылается на объект переменных makeCounter. Соответственно каждый вызов counter будет увеличивать переменную currentCount. Цитата:
|
Замыкания.
В здешнем учебнике неплохо разобраны. |
Часовой пояс GMT +3, время: 01:37. |