Имеется введу замыкание не из-за глобальных переменных, а из-за специфики такой (function label) записи функци.. если функция будет анонимная, то она не увидит переменную "ниже" себя в коде.
Чем это не замыкание, использовать именованную функцию для работы со всем контекстом?..
давайте рассмотрим пример..
(function(){
//...
function named(){
return x;
}
var anonimus = function(){
alert(named());
}
var x = 'чё то там';
//...
anonimus();
}());
Это конечно извращение, реальную задачу сейчас трудно придумать, да может оно и не нужно вообще, но имхо, это замыкание.