Показать сообщение отдельно
  #1 (permalink)  
Старый 19.09.2010, 00:31
Кандидат 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

Так вот почему после очередного вызова функции не обнуляется переменная numberOfCalls, а наоборот инкрементится и в результате numberOfCalls = 3, вместо ожидаемого 1.

хотя если просто вызвать последовательно три раза функцию тогда получаю как раз то что и ожидаю 1, почему так происходит?

function createCounter() {
   var numberOfCalls = 0;
	  return function() {
      return ++numberOfCalls;
   }
}
createCounter(); //1
createCounter(); //2
document.write(createCounter()()); //3
Ответить с цитированием