const x = "x";
function c() {
const y = "y";
console.log("c");
console.log(y);
}
function a() {
const x = "x";
console.log("a");
function b() {
const z = "z";
console.log("b");
c();
console.log(z);
}
b();
console.log(x);
}
a(); // a b c y z x
c(); // c y
위의 코드가 있다고 가정했을때 출력 순서가 어떻게 될것인지 한번 예상해보자.
a함수가 호출이 되었다고해서 바로 다음 함수인 c 함수로 가는것이 아니라, a의 선언부분으로 회귀해서 a 함수 선언안에 있는 내용들이 실행된다.