Показать сообщение отдельно
  #2 (permalink)  
Старый 19.09.2010, 01:16
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Прям фиг знает, как объяснить
function createCounter() {
   var numberOfCalls = 0;
   return function() {
      return ++numberOfCalls;
   }
}
var fn = createCounter();
alert(fn);

Т.е. в первом случае fn - это функция, которая имеет в себе типа локальную переменную numberOfCalls, доступную внутри функции. И каждый вызов fn увеличивает ее значение на единицу и возвращает его. Поэтому после 3х вызовов функция возвращает 3.
А второй пример кривоват. Вызов createCounter() ничего не дает в первых двух случаях.
function createCounter() {
  var numberOfCalls = 0;
  return function() {
    return ++numberOfCalls;
  }
}
alert(createCounter());

Если же вызвать функцию, которую возвращает createCounter(), то она вернет один и благополучно умрет, так что многократный вызов createCounter()() не даст того же эффекта, что и многократный вызов fn().
Ну или тип того
Ответить с цитированием