Если для теста написать даже вот так:
var foo = (function() {
/*var numberOfCalls = 0;*/
alert('Привет');
return function () {
return alert('Пока');
}
})();
Вначале простреляет 1 Привет, а затем 3 пока, и каждый раз когда будет выводится слово Пока, будет выводится в консоль undefined, значит переменная foo ссылается только на внутренню анонимную функцию ?
НА эту если возвратимся к коду в 1-ом посте:
return function() {
return ++ numberOfCalls;
}