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