컨텍스트 : 문맥/맥락/환경을 뜻한다. (해당 코드의 배경이 되는 조건, 환경 정도)
이해를 돕기 위해 쉽게 표현하자면,
실행 컨텍스트
: 동일한 조건/환경을 지니는 코드 뭉치 를 실행할 때 필요한 조건/환경정보
자바스크립트에서 동일한 조건을 지닐 수 있는 조건은 4가지
* 전역공간
* 함수
* eval - 여러 문제를 야기하는 위험한 명령어이므로 논외
* module
전역공간, 함수, module 모두 거대한 함수 공간이라고 간주하게 되면,
자바스크립트의 독립된 코드뭉치라고 할 수 있는 것은 곧 함수라고 볼 수 있다.
(전역공간, 모듈 또는 함수로 묶인 내부에서는 결국 “같은 환경 안에 있다.”)
if / for / switch / while 문은 별개의 실행 컨텍스트를 생성하지 않는다.
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
JavaScript
복사
콜스택 (call stack)
: 현재 어떤 함수가 동작중인지, 다음에 어떤 함수가 호출될 예정인지 등을 제어하는 자료구조