Execution Contexts and Execution Stack
자바스크립트 엔진이 코드를 실행할 때 일어나는 일
1. parser에 의해 코드가 parse 됨.
문법 체크, 코드가 유효한지 검사
맞으면 신택스 트리 만듦
2. 머신 코드로 변환
3. 코드가 실행됨
글로벌 실행 문맥은 어떤 함수 안에도 있지 않는 것
기본적으로 window object이므로
window.name이나 name 이나 전역 변수면 똑같은 거다
함수는
global execution context
-> first()
-> second() (first 안에서 실행되는 함수)
-> third() (second 안에서 실행되는 함수)
순으로 쌓이며 실행되는 순서는 스택과 같다(pop)
즉 third, second, first 순으로 실행됨
Creation and Execution Phases and Hoisting
실행 문맥 오브젝트
Variable Object: 함수 인자를 포함
Scope chain
"This" variable
1. 생성 단계
변수 오브젝트 생성
스코프 체인 생성
this 변수의 값 결정
2. 실행 단계
줄 단위로 코드 실행
모든 함수는 변수 오브젝트한테 저장된다
이것들이 실행 단계가 시작되기 전에 이미 사용가능한 것을 hoisted라고 함
: 변수 선언X 함수 선언에서만 작동함
var val = function() {}... X
function func() {}...O
실행 문맥은 코드가 실행되기도 전에 중요한 데이터들을 다 담고 있다
var age = 23
function foo() {
var age = 65
console.log(age)
}
foo() // 65 >> foo funciton의 excution context object!!
console.log(age) // 23 >> global execution context object
Scoping in javascript
Lexical scoping: 부모 함수에도 접근
Global scope
first() scope: local scope
second() scope
second->first->global을 scope chain이라 부른다
거꾸로 접근하는 것은 불가능(예: global이 second로)
실행 스택과 스코프 체인은 다르다
'웹' 카테고리의 다른 글
object.create과 function constructor pattern 차이 (0) | 2020.05.06 |
---|---|
npx create-react-app 이 작동하지 않을 때 (0) | 2020.04.30 |
TypeScript 시작하기 (0) | 2020.03.28 |
React Switch from 'react-router-dom' (0) | 2019.12.31 |
자바스트립트 this, DOM (0) | 2019.10.16 |
댓글