Тут не уверен но когда в фунции объявляется переменная, и мы вызываем её то после вызова она удаляется автоматически из памяти, но когда мы в функции вовзращаем функцию в параметры которой передаем переменную она существую дальше, тупо ответ на 3 с минусом)
Когда функция создана и передаётся куда-либо, или возвращается из другой функции, то она носит с собой рюкзак. А в этом рюкзаке хранятся все переменные, которые были в области видимости во время создания этой функции.