[JavaScript] 실행컨텍스트
JavaScript
실행 컨텍스트
함수를 호출할 때 해당 함수의 호출 정보가 차곡차곡 쌓여있는 콜 스텍이있다.
`실행 콘텍스트`는 콜 스택에 들어가는 실행 정보 하나와 유사하다.
console.log('This is global context');
function context1() {
console.log('This is context1');
}
function context2() {
context1();
console.log('This is context2');
}
Context2();
/* 출력 결과
/ This is global context
/ This is context1
/ This is context2 */
-
실행 컨텍스트 생성
실행컨텍스트실행컨텍스트변수 객체 vars, function, arguments... 스코프 체인 [List] this Context object -
실행 컨텍스트 생성 순서
-
변수 객체 생성
실행 컨텍스트에서 사용되는 지역 변수 및 함수 선언을 저장하는 객체
-
활성 객체 생성(feat.함수)
실행에 필요한 여러가지 정보를 감을 객체, 사용자가 정의한 변수 및 객체를 저장
-
arguments 객체 생성
-
스코프 정보 생성
현재 컨텍스트의 유효 범위를 나타내는 스코프 정보를 생성한다.
현재 컨택스트에서 특정 변수에 접근해야할 경우 이 리스트를 활용하며,
`스코프 체인`이라 부른다.
-
변수 생성
함수 인자는 각각의 프로퍼티가 만들어져 그 값이 할당되며,
만약 값이 넘겨지지 않았다면 undefined 가 할당된다.
주의 할 점은 이 과정에서 내부 변수나 내부 함수는 단지 메모리 생성만 하고, 초기화는 각 변수나 함수에 해당하는 표현식이 실행되기 전까지 이루어지지 않는다.
-
this 바인딩
this 키워드를 사용하는 값이 참조된다.
-
코드 실행 생성
이렇게 하나의 실행 컨텍스트가 생성되고, 활성 객체(변수 객체)가 만들어진 후에,
코드에 있는 여러가지 표현식 실행이 이루어진다.
-
-
example
-