Я понял так , еще немного допридумал, чтобы было логичнее, проверьте что не так :
Variable object (Объект переменных, сокращённо VO) - это объект, служащий хранилищем для:
1. переменных (var);
2. деклараций функций (function declaration, FD);
3. формальных параметров функции;
Главной особенностью здесь является то, что VO наполняется при входе в контекст, т.е. до выполнения кода контекста. Причём, в случае var'ов и недостающих формальных параметров под "наполнением" подразумевается резервирование слотов в VO со значением undefined.
Для глобального контекста :
VO===Global (где Global - встроенный глобальный объект) нашпиговывается ДО run-time слотами, которые по мере работы программы могут менять свои значения, но не свое количество или имена !
Для функции :
Если не было входа управления в контекст функции, то не существует для нее никакого ни VO, ни AO.
Если управление вошло во внутренний контекст функции F , то ДО ее выполнения для этой функции создается свой VO', при этом выполняются след шаги :
arguments = [<0аргумент>,<1аргумент,...];
arguments.callee=F;
arguments.length=<КолвоАргументовФункции_F>;
AO = { arguments: arguments };
F.VO=AO;
При выходе из контекста функции выполняется :
delete F.VO
Цитата:
|
Если всё понятно, можно будет продолжить про [[Scope]].
|
"Огласите весь список, пожалуйста."