Node.js 강의를 수강하기전에 기본적으로 알아 두어야 할 Javascript에 대해 공부할 것이다.
function first() {
second();
console.log('첫 번째');
}
function second() {
third();
console.log('두 번째');
}
function third() {
console.log('세 번째');
}
first()
호출 스택에 대해서 공부하기 전에 이 함수들의 실행 순서를 예측해보자.
호출 스택을 그려보면 쉽게 이해할 수 있다.
위의 그림의 원리로 실행된다.
실행 순서를 설명하자면
함수들 선언 -> first 호출(실행) -> second 호출 -> third 호출 -> '세 번째' 출력 -> '두 번째' 출력 -> '첫 번째' 출력
이런 식으로 실행된다고 이해할 수 있다.
호출 스택에 대해 좀 더 설명하자면
✍ 여기서 컨텍스트란?
📢 함수가 호출되었을 때 생성되는 환경을 의미한다. 자바스크립트 코드의 실행은 기본적으로 이러한 전역 컨텍스트 안에서 돌아간다.
❓ 위에 코드는 동기식으로 작동하는 코드이지만 만약 비동기식으로 작동한다면??
아래 코드는 setTimeout을 이용한 비동기식으로 작동하는 코드이다.
funtion run() {
console.log('3초 후 실행');
}
console.log('시작');
setTimeout(run, 3000);
console.log('끝');
이 결과를 콘솔창으로 출력해보면 아래와 같은 순서로 출력이 된다.
시작
끝
3초 후 실행
위의 결과를 설명하기 위해서는 위에서 배운 호출 스택만으로 부족하다.
이 원리를 이용하지 못하면 이후 노드를 공부하는데에 어려움을 겪을 수 있으니 이 원리를 제대로 이해하고 넘어가자!