Когда угодно, если есть доступ непосредственно к объекту. Пример:
var b, c;
function A(x) {
b = function () { alert(x); };
c = function () { ++x; };
b(); //-> 1
// поменяем значение 'x'
x = 9;
}
A(1);
b(); //-> 9
// поменяем значение 'x'
c();
b(); //-> 10
При создании функции 'b' в [[Scope]] будет навсегда "вшит" объект переменных функции 'A'. Изнутри функции 'b' мы cможем обратиться к именам, связь для которых будет найдена в объекте переменных функции 'A', в примере это имя 'x'. НО! не только функция 'b' может работать с объектом переменных функции 'A', но и сама функция 'A' (что очевидно) и любая другая функция, созданная в 'A' и глубже. Это базовый принцип - объект уникален, ссылок на него может быть много...