Правильным ли будет утверждение, что при рекурсивном вызове функции в коде, движок js ищет объявление вызываемой функции во внешней области видимости? Ниже код с комментариями.
function func() { //функция func объявлена в глобальном контексте
func();
/*в текущей области видимости 'func' не объявлена, поэтому движок
ищет объявление во внешней области видимости (в данном случае это
глобальная область видимости), находит его там и теперь может выполнить функцию*/
}
Получение доступа к переменным и функциям происходит примерно так, как я описал выше (сразу ищем внутри текущей области видимости, потом по очереди идем искать во внешних). Подходит ли эта логика для рекурсивных вызовов, или они работают по своим "законам"?