Сообщение от Главная » Основные элементы языка » Замыкания
|
При запуске функции все происходит стандартно:
создается [[scope]]
туда записываются локальные переменные
внутренняя функция получает ссылку на [[scope]]
Но в самом конце - внутренняя функция присваивается sourceNode.onclick. Внешняя функция закончила свою работу, но внутренняя - может запуститься когда-нибудь потом.
Интерпретатор javascript не проводит анализ - понадобятся ли внутренней функции переменные из внешней, и какие переменные могут быть нужны.
Вместо этого он просто оставляет весь [[scope]] внешней функции в живых.
Чтобы когда внутренняя функция запустится, если она вдруг не найдет какую-либо переменную в своем [[scope]] - она могла обратиться к [[scope]] внешней функции и нашла бы ее там.
|
Когда внешняя функция будет вызываться повторно, но с другими аргументами, а [[scope]] будет еще занят внутреней функцией с предыдущего вызова, интерпритатор для этой внешней функции создаст [[scope]] ещё раз?????