Есть такой пример, взят из хабры, тема про замыкания
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