Показать сообщение отдельно
  #1 (permalink)  
Старый 17.07.2014, 01:12
Интересующийся
Отправить личное сообщение для pshcolnyy Посмотреть профиль Найти все сообщения от pshcolnyy
 
Регистрация: 19.04.2014
Сообщений: 25

Перевернулся мир в моей голове.
Всем привет. Вот я тут недавно начал читать книгу с носорогом на обложке по java script и у меня возникло несколько вопросов в понимании прочитанного в этом фрагменте текста.


8.8.2. Объект вызова
Когда интерпретатор JavaScript вызывает функцию, в первую очередь он устанавливает область видимости в соответствии с цепочкой областей видимости, которая действовала на момент определения функции. Затем он добавляет в начало цепочки новый объект, известный как объект вызова – в спецификации
ECMAScript используется термин объект активации (activation object). В объект вызова добавляется свойство arguments, которое ссылается на объект Arguments функции. После этого в объект вызова добавляются именованные аргументы функции. Любые локальные переменные, объявленные с помощью инструкции var, также определяются внутри объекта. Поскольку данный объект вызова
располагается в начале цепочки областей видимости, все локальные переменные, аргументы функции и объект Arguments становятся видимыми из тела функции. Помимо всего прочего это означает, что все одноименные свойства оказываются за пределами области видимости.
Обратите внимание: this, в отличие от arguments, – это не свойство объекта вызова, а ключевое слово.


1) Вопрос про первое предложение. Какая еще цепочка видимости в соответствии с той которая была на момент создания функции. Да я понимаю когда создаётся функции она может использовать все, что есть вне ее, а вот если функции внутри функции то внешняя не видит ничего из внутренней.При этом тут не говорится о создании функции , тут говориться о том месте где вызывают функцию, вот я не понимаю какая цепочка видимости функции может быть.

2) Второе предложение тоже слегка непонятно для меня. Начало цепочки видимости это там где глобальный объект или там где находится сама функция. В 3 предложении написано про объект вызова в котом находиться все переменные, другие функции, и все остальное что есть в функции. Я думал ,что он создается тогда же когда и создается функция, а не тогда когда она применяется.

3) И тут в самом конце написано, что потому что объект вызова находится в самом начале цепочки видимости все, что находиться снаружи функции прекрасно видит все переменные и другие вещи которые находятся внутри функции.



Заранее спасибо за ответы.
Ответить с цитированием