Scope , 유효 범위
- 변수와 매개변수(parameter)의 접근성과 생존 기간을 뜻한다.
- 전역 스코프와 지역 스코프로 나뉜다.
- 전역 스코프는 스크립트 전체에서 참조 되는 것,
- 지역 스코프는 정의된 함수 내에서만 참조 되는 것

- 위의 그림에서 스코프는
- 전역 > A > B > 익명함수(C)
- 전역 // global_scope
- A // a_scope_param, local_scope_a
JavaScript 유효범위의 특징
- 함수 단위의 유효 범위
- 변수명 중복 허용
- var 키워드 생략
- 렉시컬 특성
함수 단위의 유효 범위 - var의 문제점
function scopeTest(){
var a = 0;
if(true) {
var b = 0;
for(var c = 0; c < 3; c++){
console.log("c : ", c);
}
console.log("c : ", c);
}
console.log("b : ", b);
}
scopeTest();
// c : 0
// c : 1
// c : 2
// c : 3 함수 단위의 유효 범위이기 때문에 가능함
// b : 0
- 위의 코드의
var
를 let
으로 바꾸면 let
이 블록 단위의 스코프를 갖기 때문에 for
문 밖에서 c
를 호출하면 에러가 발생하게 된다.
변수명 중복
let scope = 10;
function scopeExample(){
let scope = 20;
console.log('scope : ", scope);
}
scopeExample();
// scope : 20
- 변수를 호출하면 현재 컨텍스트부터 전역 컨텍스트까지 가장 가까운 위치에 있는 변수를 호출하게 된다.