Показать сообщение отдельно
  #4 (permalink)  
Старый 19.09.2010, 11:43
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Вроде разобрался. только правильно ли я понял

function createCounter() {
   var numberOfCalls = 0;
   return function() {
      return ++numberOfCalls;
   }
}
var fn = createCounter();
fn(); //1
fn(); //2
document.write(fn()); //3


1. Всего 1 запуск функции createCounter(), fn = createCounter(); выполняется функция createCounter() возвращает переменной fn
function() {
      return ++numberOfCalls;
   }

2. scope createCounter() функции не удаляется так так как вложенной может понадобиться ее переменные

3. далее происходит вызов три раза
function() {
      return ++numberOfCalls;
   }

переменная numberOfCalls; в итоге 3

А во втором примере тот что писал в первом сообщении, после выполнения createCounter естественно все удаляется по завершению каждый раз.


Только теперь непонятно, когда будет удалена переменная numberOfCalls если следовать первому примеру, она так и повиснет в памяти навсегда?

Последний раз редактировалось TicTac, 19.09.2010 в 12:03.
Ответить с цитированием