Нет, он
замкнут на новосозданную функцию.
function createCounter() {
var i=99;
var j='txt'
return function(a) {
alert(eval(a||'"none"')) //i и j нигде не упоминаются
}
}
var fn = createCounter();
fn();
fn('i');
fn('j');
Вызывая же createCounter() второй раз вы ничего не обнуляете - это уже совершенно другая функция с своим scope.