Нет, если бы переменная была локальная тебе бы приходила ошибка, а не пустой массив.
Проблема твоя в том, что операция запроса к базе данных - асинхронная, т.е. запрос и ответ разнесены во времени.
Сейчас твой код условно выглядит так:
1. Задали переменную, инициализировали её пустым массивом.
2. Послали запрос в базу данных.
3. Обратились к переменной - получили пустой массив.
4. Прошло некоторое время.
5. Пришёл ответ от базы данных - заполнили массив.
Изучи как работать с
асинхронностью, без этого никуда.