Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 07.10.2008, 21:14
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

если б я знал, я бы не спрашивал
Ответить с цитированием
  #22 (permalink)  
Старый 07.10.2008, 22:22
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Kolyaj
Имелось в виду variable definition.
function-expression

Сообщение от Андрей Параничев
Именованная функция видна везде, анонимная - только после объявления.
не только анонимная, а function-expression. Вообще, function-expression не воздействует на variable object, однако в случае последующей привязки к var'у она все же доступна для вызова

Сообщение от ZoNT
какие это контексты???
каждый вызов функции (а также ее вызов в роли конструктора) создает новый контекст запуска; типы исполняемого кода: глобальный, eval, и тело функции (10.2 Entering An Execution Context)
__________________
Тонкости ECMAScript
Ответить с цитированием
  #23 (permalink)  
Старый 08.10.2008, 11:19
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Сообщение от Dmitry A. Soshnikov
Сообщение от ZoNT
какие это контексты???
каждый вызов функции (а также ее вызов в роли конструктора) создает новый контекст запуска; типы исполняемого кода: глобальный, eval, и тело функции (10.2 Entering An Execution Context)
Я спрашивал про контексты в хэде и в боди. Какие это контексты?
Ответить с цитированием
  #24 (permalink)  
Старый 08.10.2008, 12:16
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от ZoNT
Я спрашивал про контексты в хэде и в боди.
хэд и боди к JS никак не относятся.

Сообщение от ZoNT
Какие это контексты?
глобальный контекст, но когда войдет в функцию - будет контекст функции (если затем функция запустит сама себя рекурсивно - создастся новый контекст, где тип исполняемого кода - тоже "функция")
__________________
Тонкости ECMAScript
Ответить с цитированием
  #25 (permalink)  
Старый 08.10.2008, 12:42
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Ты пример смотрел?
Ответить с цитированием
  #26 (permalink)  
Старый 08.10.2008, 13:32
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

я те про пример и объясняю =) если что-то не понятно - спрашивай
__________________
Тонкости ECMAScript
Ответить с цитированием
  #27 (permalink)  
Старый 08.10.2008, 13:32
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от ZoNT Посмотреть сообщение
Я спрашивал про контексты в хэде и в боди. Какие это контексты?
Контексты исполнения глобального кода каждого отдельного скриптового блока (2 штуки).

ECMAScript не распыляет "ECMAScript program" на несколько, все термины крутятся вокруг одной, в единственном числе. Соответственно, стек контекстов исполнения формируется в рамках одного единственного "execution of an ECMAScript program", около-html-ные вопросы, связанные с несколькими скриптовыми блоками, кодом в атрибутах элементов и проч. не рассматриваются вообще. Отсюда можно самому выдумать теорию, например:

а) каждый блок - это execution of an ECMAScript program, со своим собственным стеком контекстов исполнения, по html-коду ползает html-парсер, и каждый найденный им скриптовый кусок - это отдельно взятая программа, работающая по алгоритмам ES;

б) определяющим является единый для блоков глобальный объект (это самое важное), контекст исполнения глобального кода един на все блоки, конретизация (hoisting кому ближе) "переменных" в каждом блоке хоть и своя, но это обычно незаметно глазу, т.к. мало кто создаёт себе ошибки на этом фронте (пример не в счёт).

в) иное определение ситуации...
Ответить с цитированием
  #28 (permalink)  
Старый 08.10.2008, 13:42
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

вот этот ответ - правильный.

Контекст у каждого скриптового блока свой. Это логично. Ведь нельзя обратится к функции из другого блока, если этот блок ещё не загружен/исполнен. А загружен он может быть только если его вызов был РАНЬШЕ блока из которога вызывается функция.
Соответственно никакой пользы от var f= func... vs function f()... нет.
Только лишний гемморой с отладко тому человеку, который потом будет испоьзовать такой код и случайно разделит его по разным блокам.
Ответить с цитированием
  #29 (permalink)  
Старый 08.10.2008, 14:10
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

ZoNT,
Не надо ставить все с ног на голову. Вопрос был в различиях между
function name() {} и var name = funciton() {} - они есть и описаны в спецификации.
Ответить с цитированием
  #30 (permalink)  
Старый 08.10.2008, 14:15
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

это один из тех примеров, которые НЕ нужно применять.
Из оперы: есть ли разница, ставить в конце строки ; или нет...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тест Redirect Общие вопросы Javascript 2 28.10.2008 00:08
Проблема обработки скрипта в Mozilla ermugard Firefox/Mozilla 2 18.06.2008 17:52
Новый тест Илья Кантор Сайт Javascript.ru 11 08.04.2008 18:04