Тема: тест
Показать сообщение отдельно
  #16 (permalink)  
Старый 07.10.2008, 17:51
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

ZoNT,
Управление JavaScript'у передается дважды, это два отдельных контекста.

Вкратце:
Когда интерпретатор входит в какой-то контекст (global/eval/function body) создается variable object который хранит в себе все декларации этого контекста. Если функция объявлена через FunctionDecloration (function Identifier(Params) {Body}), то она попадает в variable object под своим Identifier и её результатом уже будет объект Function. В случае VariableDecloration (var Identifier = ...) в variable object попадает свойство Identifier, но его значением будет undefined, пока оно не будет изменено в ходе выполнения скрипта.

Другими словами, функция заданная через FunctionDecloration доступна в variable object с уже "готовым" результатом, в отличии от VariableDecloration, где до того места, где она будет объявлена, её значение будет undefined.
Ответить с цитированием