Показать сообщение отдельно
  #6 (permalink)  
Старый 17.06.2010, 22:32
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

B~Vladi,
у вас сложилось превратное понимание замыканий

при повторном вызове ф-ции, она не имеет понятия о пеерменных внутри нее созданных при более ранних ее вызовах.
поэтому в вашем втором примере ф-ция не помнит переменную test1

Кстати, при кадом новом вызове ф-ции, создается новый [scope], а при завршении ее, убивается, если на него нету ссылок(например их созданных внутри ф-ций)

поэтому в вашем первом примере, каждый вызов fn() создает новый [scope], который запоминается свежесозаднной ф-цией внутри fn()
поэтому каждая из этих ф-ций помнит свой scope, и ничего не знает о чужом

[scope] ф-ции -- это не что-то привязанное к самой ф-ции, а привязанное к ней, и ее одному запуску.
новый запуск-новый [scope]
Ответить с цитированием