Сравнить версии

Повторное введение в JavaScript

Change Revisions

Ревизия 267077:

Версия 267077 пользователя Kupuyc, сделанная

Ревизия 267078:

Версия 267078 пользователя Kupuyc, сделанная

Заголовок:
Повторное введение в JavaScript
Повторное введение в JavaScript
Slug:
Повторное_введение_в_JavaScript
Повторное_введение_в_JavaScript
Содержимое:

Ревизия 267077
Ревизия 267078
n977      Итак мы подошли к самой интересной абстракции в JavaScript n977      Итак мы подошли к самой интересной абстракции в JavaScript 
>- но в тоже время смущающей новичков и сложной для понимания. И ч>- но в тоже время смущающей новичков и сложной для понимания. И ч
>тоже это?>то же это?
n996      Хотя нам кажется, что локальная переменная после вызова болn996      Хотя нам кажется, что локальная переменная после вызова бол
>ьше не существует - но она всетаки. Более того мы мы имеем две ко>ьше не существует - но она всетаки. Более того мы имеем две копии
>пии локальных переменных <code>makeAdder</code> - одна в которой > локальных переменных <code>makeAdder</code> - одна в которой <co
><code>a</code> равно 5 и вторае где <code>a</code> равно 20. И та>de>a</code> равно 5 и вторая, где <code>a</code> равно 20. И таки
>ким образом результат выполнения этих функций:>м образом результат выполнения этих функций:
t1003      Итак чтоже происходит: когда JavaScript выполняет функцию сt1003      Итак что же происходит когда JavaScript выполняет функцию с
>оздается контекстный объект ('scope' object), который служит конт>оздается контекстный объект ('scope' object), который служит конт
>ейнером для локальных переменных, объявленных в этой функции. К н>ейнером для локальных переменных, объявленных в этой функции? К н
>им также добавляются параметры переданные в функцию. Это похоже н>им также добавляются параметры переданные в функцию. Это похоже н
>а глобальный объект в котором живут все глобальные переменные и ф>а глобальный объект в котором живут все глобальные переменные и ф
>ункции, но с парой различий: во-первых новый контекстный объект с>ункции, но с парой различий: во-первых новый контекстный объект с
>оздается каждый раз при выполнении функции, и во-вторых в отличии>оздается каждый раз при выполнении функции, и во-вторых в отличии
> от глобального объекта (в браузере глобальным объектом является > от глобального объекта (в браузере глобальным объектом является 
>window) вы не имеете прямой доступ к контекстному объекту. Те нет>window) вы не имеете прямой доступ к контекстному объекту. Т.е. н
> механизма чтоб пройтись по свойствам текущего контекстного объек>ет механизма чтоб пройтись по свойствам текущего контекстного объ
>та.>екта.
1004    </p>
1005    <p>1004    </p>
1005    <p>
1006      Итак когда мы вызываем <code>makeAdder</code>, создается ко1006      Итак когда мы вызываем <code>makeAdder</code>, создается ко
>нтекстный объект со свойством: <code>a</code>, те аргументом пере>нтекстный объект со свойством: <code>a</code>, т.е. аргументом пе
>данным в функцию <code>makeAdder</code>. Далее <code>makeAdder</c>реданным в функцию <code>makeAdder</code>. Далее <code>makeAdder<
>ode>возвращает новую функцию. Обычно в JavaScript сборщик мусора(>/code>возвращает новую функцию. Обычно в JavaScript сборщик мусор
>garbage collector) после этого удаляет контекстный объект дл <cod>а(garbage collector) после этого удаляет контекстный объект для <
>e>makeAdder</code>, но возвращаемая функция содержит ссылку на не>code>makeAdder</code>, но возвращаемая функция содержит ссылку на
>го и это не позволяет сборщику мусора удалить контекстный объект.> него и это не позволяет сборщику мусора удалить контекстный объе
 >кт.

Вернуться в Историю