B~Vladi,
у вас сложилось превратное понимание замыканий
при повторном вызове ф-ции, она не имеет понятия о пеерменных внутри нее созданных при более ранних ее вызовах.
поэтому в вашем втором примере ф-ция не помнит переменную test1
Кстати, при кадом новом вызове ф-ции, создается новый [scope], а при завршении ее, убивается, если на него нету ссылок(например их созданных внутри ф-ций)
поэтому в вашем первом примере, каждый вызов fn() создает новый [scope], который запоминается свежесозаднной ф-цией внутри fn()
поэтому каждая из этих ф-ций помнит свой scope, и ничего не знает о чужом
[scope] ф-ции -- это не что-то привязанное к самой ф-ции, а привязанное к ней, и ее одному запуску.
новый запуск-новый [scope]
|