У JS область видимости определяется при разборе а не при выполнении, у Фленегана вроде она называется "синтаксическая область видимости", хотя на счет термина я могу и ошибаться.
https://www.books.ru/books/javascript-podrobnoe-ru... тут єто неплохо разжевано.
конкретно с вашим куском кода ваша задача "И как вызвать функцию с этой переменной не передавая ее в функцию?" выглядит как говнокод, потому что в большом проекте можно будет сломать голову откуда беруться переменные с которыми работает функция. Попробуйте обобщить задачу, может у нее есть более красивое решение.