함수의 실행 절차
13 June, 2020 - JavaScript - 1 min read
함수의 실행 절차
아래의 예시 코드에서 console.log()
의 인자가 출력되는 내용을 통해 함수의 실행 절차를 알아보자.
var a = 1;
function outer() {
console.log(a); // 1
function inner() {
console.log(a); // undefined
var a = 3;
}
inner();
console.log(a); // 1
}
outer();
console.log(a); // 1
위와 같은 코드가 있을 때 내부적인 실행 절차는 다음과 같다.
- 전역 실행 컨텍스트 생성
- 전역 변수
a
선언(호이스팅) - 외부 함수
outer
선언(호이스팅) - 변수
a
에 1 할당 outer
함수 호출 및outer
실행 컨텍스트 생성- 함수
inner
선언(outer
스코프에서 호이스팅) outer
스코프에서a
탐색하지만 찾을 수 없으므로 전역 스코프에서 재탐색 후 1 출력- 중첩 함수
inner
호출 및inner
실행 컨텍스트 생성 - 지역 변수
a
선언(inner
스코프에서 호이스팅) inner
스코프에서a
탐색 후 출력하지만 호이스팅만 된 단계이므로undefined
출력- 지역 변수
a
에 3 할당 inner
실행 컨텍스트 종료- 제어권이
outer
실행 컨텍스트로 돌아오며 전역 스코프에서 변수a
탐색 후 1 출력 outer
실행 컨텍스트 종료- 전역 스코프에서 변수
a
탐색 후 1 출력