SCOPING AND SCOPE IN JAVASCRIPT: CONCEPTS
- Scoping: 프로그램 변수의 구성 및 액세스 방법 by JavaScript engine
- Lexical scoping: 함수 및 블록을 코드에 배치하여 제어
- Scope: 특정 변수가 선언된 환경의 공간. 글로벌 범위(global scope), 함수 범위(function scope), 블록 범위(block scope)가 있다
- Scope of a variable: 특정 변수에 액세스 할 수 있는 코드 영역
GLOBAL SCOPE
- 기능 또는 블록 외부
- 글로벌 범위에 선언된 변수는 어디에서나 액세스 할 수 있다
FUNCTION SCOPE
- 선언된 변수는 외부가 아닌 내부 함수에서만 액세스 할 수 있다
- local scope라고 불린다
BLOCK SCOPE(ES6)
- 변수는 블록 내부에서만 액세스 할 수 있다
- let, const 변수만 여기에 적용된다
- 함수도 블록 범위로 지정된다 (오직 strict mode에서만 적용)
SCOPE CHAIN
const myName = 'Jonas';
function first() {
const age = 30;
if (age >= 30) {
const decade = 3;
var millenial = true;
}
function second() {
const job = 'teacher';
console.log(`${myName} is a ${age}-old ${job}`)
}
second();
}
first();
