Funkcja w funkcji a wywołanie

0

Witam, mam krótkie pytanie. Dlaczego wywołanie funkcji, które jest zagnieżdzone w innej funkcji, może być przed jej deklaracją? np

const test2=function(){
   test();
}
const test=()=>{
   console.log('działa');
}
test2();

gdyby było

test();

const test=()=>{
   console.log('działa');}

wyskoczył by błąd "can't access lexical declaration 'test' before initialization"

Czy chodzi o to, że interpreter, najpierw deklaruje funkcję test 2, potem jest deklaracja funkcji strzałkowej test,następnie jest wywołanie funkcji test2 i tym samym wywołanie funkcji test?

0

Szczegóły działania interpretera JS znajdziesz w dokumentacji. Przed dotarciem to wywołania test2() interpreter widzi wszystkie definicje funkcji. W drugim przypadku funkcja test() nie jest hostowana.

1 użytkowników online, w tym zalogowanych: 0, gości: 1