Из f
невозможно получить доступ к переменной x
, которая была объявлена первой
Нет, нет. Внутренняя область действия x
скрывает внешнюю область действия x
.
var closure = (function () {
var local = {};
local.x = 1;
return {
f: function (x) {
alert(x || local.x);
}
};
}());
closure.f(2); // alerts "2"
closure.f(); // alerts "1"
Вы, конечно, не можете иметь внутреннюю переменную с именем "local". ; -)