Закрытие зависит от того, где была создана функция, а не от того, где она была вызвана. Функция foo
в примере 2 не имеет доступа к локальной переменной value
функции bar
. Поэтому из-за закрытия значение, возвращаемое из foo
, равно value
глобальной области видимости.