Показать сообщение отдельно
  #5 (permalink)  
Старый 25.01.2015, 14:38
Новичок на форуме
Посмотреть профиль Найти все сообщения от bindquest
 
Регистрация: 25.01.2015
Сообщений: 2

Сообщение от kilohertz_.
Я не понимаю, почему меняется! Ведь она же обнуляется при каждом вызове функции!
Ты должен уяснить разницу, между простым вызовом ф-ции и замыканием. В замыкании создается контекст, это функция с состоянием. В твоем случае, инструкция var numberOfCalls = 0 не отрабатывает каждый раз при вызове твоей функции. Этот код аналогичен такому.
o={
 numberOfCalls: 0,
 counter: function(){return this.numberOfCalls++}
}

alert([o.counter(), o.counter(), o.counter()])

Замыкание -- это не просто ф-ция, это ф-ция+окружение
Ответить с цитированием