a
объявляется как глобальная переменная, и ей присваивается значение 1. a
также объявляется внутри функции f()
и присваивается значение 2. Функция n()
объявляется внутри функции f()
и вызывается после присваивания «внутреннему» a
.
. Поэтому, когда вызывается n
, идентификатор a
будет разрешен из области действия n
.Первый переменный объект в цепочке областей действия со свойством a
- это объект, объявленный в f
, поэтому возвращается его значение.