범위를 뜻하는 단어로 변수 접근 규칠에 따른 유효범위를 말함. 변수는 어떠한 환경 내에서만 사용이 가능하다. 자바스크립트는 기본적으로 함수가 선언되고 자신만의 Scope를 갖는다.
let x = 'global';
function foo(){
let x = 'function scope';
console.log(x)
}
foo(); // => 'function scope'
console.log(x); // => 'global'
자바스크립트에서는 중괄호{}로 감싼 코드를 블록문(Block Statement)라고 부른다. 블록문 안에 선언된 변수를 로컬 변수 혹은 지역 변수(Local variable)라고 부른다. 로컬변수는 블록문 내에서만 사용할 수 있는 변수이다. foo 함수 안에 있는 변수 x의 scope 유효한 범위는 foo 함수 안 까지 만이다.
let x = 3;
function foo(){
console.log(x)
}
foo() // => 3
console.log() // => 3
블록문 밖에서 선언한 변수는 불록문 안에서도 사용할 수 있는데 이런 변수를 글로벌 변수 혹은 전역변수하고 부른다.
let x = 3;
function foo(){
let x = 5;
console.log(x)
}
foo() // => 5
console.log() // => 3
함수 내부에서 같은 이름으로 다시 변수를 선언할 경우 스코프에 걸려 함수 내부에 있는 x 변수를 출력한다. 즉 블록문 내부에서 선언된 지역 변수가 있는지 먼저 확인하고 있으면 그 지역 변수를 사용하고 없을 경우 전역 변수를 사용한다.