Да нет же. В твоём примере проблема в том, что ты делаешь постинкремент. То есть ты возвращаешь из функции предыдущее значение счётчика.
В общем глобальные переменные не нужно использовать хотя бы по той же причине, по которой это осуждается в других языках. Я, например, любой используемый код на html страницах оборачиваю в:
(function() {
// Здесь код
})();
Чтобы все используемые переменные не захламляли глобальный контекст.
Кстати сказать, функции являются переменными-объектами. Ты можешь даже свойства им назначать. Например:
function ololo() {
console.log(ololo.prop);
}
ololo.prop = "OLOLO";
ololo();