function b(){ Execution Context
console.log(myVar); myVar 1 (Reference to Outer Environment) > Global Execution Context
}
function a(){ Execution Context
var myVar = 2; myVar 2 (Reference to Outer Environment) > Global Execution Context
b();
}
var myVar = 1; Global Execution Context
a(); myVar 1
// 1
function b의 경우 myVar을 찾을 수 없어서 outer environment를 참조
b() > a() > Global Execution Context
이러한 것을 스코프 체인이라 한다.
Scope : 어디서 변수가 접근 가능한지
function a() {
function b() {
console.log(myVar);
}
var myVar = 2;
b();
}
var myVar = 1;
a(); // 2
b(); // b is not defined
function b의 경우 Global Execution Context에서 실행되지 않아 실행불가, a()함수 안에서
b() -> a() -> Global Execution Context
'Udemy > JavaScript:Understanding the weird part' 카테고리의 다른 글
The 'new' keyword (0) | 2019.03.08 |
---|---|
closure and keyword 'this' (0) | 2019.03.07 |
Object-Oriented Javascript and Prototypal Inheritance (0) | 2019.03.04 |
Objects and Functions (0) | 2019.02.24 |
Types and Operators (0) | 2019.02.23 |