강좌 방향 : 자바스크립트(ES5) 엔진 처리 중심
엔진 관점의 핵심 키워드:
Execution Context
,Identifier Resolution
book() 함수가 호출되면
show() 함수가 호출되면 EC 생성
DER에 show()의 변수, 함수 기록
OLER에 show의 [[Scope]]를 설정
this 바인딩 컴포넌트에 this 참조 설정
show 실행 컨텍스트(EC): {
렉시컬 환경 컴포넌트(LEC): {
환경 레코드(ER): }
선언적 환경 레코드(DER): {
title: "JS책"
}.
오브젝트 환경 레코드(OER): {}
},
외부 렉시컬 환경 참조(OLER): {
point: 123,
getPoint: function(){}
}
},
변수 환경 컴포넌트(VEC): {},
this 바인딩 컴포넌트(TBC): {
글로벌 오브젝트(window)
}
}
식별자 해결
스코프에서 이름을 찾기 위해
resolution의 사전적 의미: 해결, 결정
식별자 해결을 수단, 방법
식별자가 유일하면
var point = 100;
function getPoint(){
var point = 200;
return point;
};
var result = getPoint();
console.log(result);
// 200
scope chain은
scope chain은
함수가 호출되면
생성한 scope를
- scope chain에 연결하고
동적 처리
ES3의 실행 콘텍스트 환경
스펙의 scope chain 사용 횟수
ES5: 바뀐 것을 나타내기 위해 사용
function 키워드를 만나면
이 시점에서 스코프가 결정됨
함수가 호출되면
var point = 123;
function book(){
function getPoint(){};
};
book();
// 123
함수에서 var 키워드를 사용하지 않고
ES5 해결 방법
ES6 해결 방법
실행 시점에 스코프 결정
with 문은
eval() 함수는
서버 프로그램 고려 사항
JS는 Single Thread
Node.js에서 JS는 비동기 처리
Context 형태가 효율성이 높음
실행 콘텍스트에
*** ES5 스펙 ***
10. Executable Code and Execution Contexts
10.1 Types of Executable Code
10.1.1 Strict Mode Code
10.2 Lexical Environments
10.2.1 Environment Records
10.2.2 Lexical Environment Operations
10.2.3 The Global Environment
10.3 Execution Contexts
10.3.1 Identifier Resolution
10.4 Establishing an Execution Context
10.4.1 Entering Global Code
10.4.2 Entering Eval Code
10.4.3 Entering Fuction Code
10.5 Declaration Binding Instantiation
10.6 Arguments Object
자바스크립트(ES5) 엔진 처리 중심
기능보다 논리에 중점을 두고 접근