Matz
Просветленный
(36096)
1 год назад
Если message вынести из окружения функции log то значение 0 будет присвоено этой переменной только один раз при ЕДИНСТВЕННОМ запуске функции createIncrement()
Виктор ЛеоновГуру (2530)
1 год назад
но у нас перед этим три раза increment() вызвался , который count увеличил, и когда message в окружении log находится, то приходит тройка . то почему если выносим ЗА log , у нас идёт 0 . т.к при вызове функции log переменную она не должна найти у себя, и взять уже увеличенную в родительском окружении
в общем не понятно , что меняется если log будет брать если у себя не найдет ту же переменную , только в другом окружении . хотя перед этим мы вызываем increment()
Dmitry
Оракул
(62522)
1 год назад
Разница здесь в том когда именно было присвоено значение переменной message.
Например когда присвоение значения идет в функции log, которая вызывается после трех вызовов функции increment, то в переменной count уже значение 3
А когда мы выносим строчку с message из функции log, то присваивание ей значения происходит в момент вызова функции createIncrement и соответственно её значение на этот момент равно 0, а после трех раз increment лишь обновляется значение переменной count, но не message.
Виктор ЛеоновГуру (2530)
1 год назад
все-равно кажется не логичным то, что message в любом случае ссылается на count и при третьем вызове он 0 ) . в log он плюсует логично . а когда переменная в главной функции то почему то записывается только первый раз. хотя вызывается это всё после счетчика.