1. ES3/ES5 스펙의 아키텍처, 메커니즘 관련 키워드
ES3/ES5 스펙의 아키텍처(개요)
ES3 Spec
- Execution Context : 실행 콘텍스트로 함수가 호출되었을 때 함수가 실행될 수 있는 환경과 결과를 저장하는 영역. 즉, 함수의 모든 처리는 Execution Context안에서 이뤄집니다.
- Definition
- Function Oject:
⇒엔진이 function 키워드를 만났을때 만드는 Function 키워드
- Types of Executable Code
⇒실행 가능 코드로 Global, Eval Function code가 있습니다.
- Variable Instantiation
⇒변수의 인스턴스화 변수를 어떻게 인스턴스화해서 처리할 것인지에 대한 개념
- Scope Chain and Identifier Resolution
⇒ 스코프체인과 식별자 해결(결정) 즉, 함수를 호출할 때 어떻게 함수 이름을 찾을 것인가와 변수의 이름을 설정할 때 어떻게 변수를 찾을것인가에 대한 개념
- Global Object
⇒전역 객체로 Function Object와 다 동일하지만 영역이 다르기 때문에 구분한다.
- Activation Object
⇒ 함수를 실행할 수 있는 환경과 함수가 실행되었을 때 결과를 저장하는 오브젝트
- This
⇒인스턴스에서 중요한 역할
- Arguments Object
⇒ 함수의 파라미터를 처리하는 오브젝트
- Entering An Execution Context
- Global Code
- Eval Code
- Function Code
ES5 Spec
- Executable Code and Execution Contexts
⇒실행 컨텍스트는 ES3와 동일
- Types of Executable Code
- Strict Mode Code
⇒ 'use strict' 로 작성했을 때의 실행 모드
- Lexical Environments
⇒ JS ES5에서 정적인 환경을 취합니다. 실행 컨텍스트 안에서 환경적인 측면을 처리하는 것이 Lexical Environments입니다.
- Environment Records
⇒ 함수가 호출되어 실행될때와 그 전에 그 상황들을 기록하는 것
- Lexical Environment Operations
⇒ 어떤 변수에 값을 할당했을 때 정적인 환경에 설정하는 것
- The Global Environment
⇒ Global Object를 처리하는 환경입니다.
- Execution Contexts
- Identifier Resolution
⇒ 식별자 해결은 함수를 호출했을 때 어디서 찾을 것인가에 대한 개념
- Establishing an Execution Context
- Entering Global Code
⇒ 함수 안으로 엔진 컨트롤이 이동했을때 코드를 어떻게 처리할 것인가.
- Entering Eval Code
⇒ 함수 안으로 엔진 컨트롤이 이동했을때 코드를 어떻게 처리할 것인가.
- Entering Function Code
⇒ 함수 안으로 엔진 컨트롤이 이동했을때 코드를 어떻게 처리할 것인가.
- Declaration Binding Instantiation
⇒ 변수를 어떻게 실행 컨텍스트의 Environment에 바인딩 시킬 것인가.
- Arguments Object
⇒ 함수의 파라미터를 처리하는 오브젝트
2. 엔진 관점의 핵심 키워드
ES3 Spec
- Execution Contexts
- Definition
- Function Objects
- Types of Executable Code
- Variable Instantiation
- Scope Chain and Identifier Resolution
- Global Object
- Activation Object
- This
- Arguments Object
- Entering An Execution Context
- Global Code
- Eval Code
- Function Code
ES5 Spec
- Excutable Code and Execution Contexts
- Types of Executable Code
- Strict Mode Code
- Lexical Environments
- Environment Records
- Lexical Environment Operations
- The Global Environment
- Execution Contexts
- Identifier Resolution
- Establishing an Execution Context
- Entering Global Code
- Entering Eval Code
- Entering Function Code
- Declaration Binding Instantiation
- Arguments Object
ES3와 ES5의 가장 큰 차이점
ES3에서는 Scope Chain, ES5에서는 Lexical Environments개념이 가장 큰 차이점
정리