6. 파싱 단계
•
변수와 함수를 정의한다.
•
3Line: myFun 변수가 undefined로 정의.
•
5~8Line: myFun 함수가 정의, 3Line myFunc의 변
수를 덮어쓴다.
7. 실행 단계
•
1Line: myFun 함수가 호출, “local variable” 출력
•
3Line: myFun에 “overwrite” 대입
•
myFun이 가리키고 있던 함수는 가비지 컬렉션으로 간다.
•
10Line: “overwrite” 출력
•
메소드와 프로퍼티는 실행시 판단된다.
8. 함수 Scope
•
함수 내부 속성에는 [[SCOPE]]라는 속성이 있다.
•
[[SCOPE]]는 우리가 접근 할 수 없다.
•
ECMA-262에서 정의
14. Execution Context
•
자바스크립트에서 스코프를 아리송하게 하는놈
•
파싱 단계와 실행단계의 스코프 차이를 만든다.
•
실행시 함수 스코프를 복사한후 자신만의 스코프 체인에
Activation Object을 추가한다.
•
함수 실행할 때마다 Execution Context가 만들어진다.
15. var result = myFun(‘closure’);
execution context
!
Scope Chain
Scope Chain
0
1
Activation Object
this
window
arguments
[name]
name
“closure”
msg
undefined
Global Object
this
window
window
(object)
document
(object)
myFun
(function)
result
undefined
…
…