이런 코드가 주어졌을 때, 변수의 스코프와 실행의 순서에 대해서 당연히 알고 있어야함 그것이 바로 '인간 js 엔진'
내가 생각한 답
console기준
'a' -> 'b' -> 'c' -> 'c'
당연히 스택으로 생각한다면
나는 프링글스 통에 비유를 해주고 싶다.
아래서 부터 쌓인 후 위에서 부터 빠져나가는 (LIFO or FILO) 형식
선입선출의 예시 (FIFO)
그래서 조금 더 상세하게 위에 코드를 분석하자면,
스택에 쌓이는 순은
18번째 줄
-> console.log('a') -> 콘솔 제거 -> b -> console.log('b') -> 콘솔 제거 -> c -> console.log('c') -> 콘솔 제거 -> c 제거 -> b 제거 -> a 제거
19번째 줄
c -> console.log('c') -> 콘솔 제거 -> c 제거
코드에서 함수 선언부의 중괄호가 끝날 때 스택에서 지워진다고 생각하면 됨
-> 스코프 체인도 볼 수 있음
이렇게 함수의 스택의 맨 아래 (마지막 순번)에 anonymous를 볼 수도 있는데 이거는 파일을 실행할 때 나오는 함수라고 생각하면 된다.