Привет. Тренируюсь, нужно было написать счетчик. Навалялось такое
var catCounter = function () {
    var counter = 0;
    return function () {
        return counter++;
    }
};
alert(catCounter());
Такой вариант не сработал.
function catCounter() {
    var counter = 0;
    return function() {
        return counter++;
    };
}
var counter = catCounter();
alert(counter());
А вот этот - отлично. Почему так?