코드의 접근 범위를 결정하는 것으로, 변수 접근 규칙에 따른 변수에 접근 가능한 유효범위를 말한다.
변수가 전역에 선언되어 있어 어느 곳에서든 접근이 가능하고, 전역에 선언된 변수를 전역변수
라고 한다.
var a = 1; // 전역스코프, 전역변수
function numberPrint() { // 지역스코프
return a;
};
console.log(numberPrint()); // 1
해당 지역내에서만 접근 할 수 있으며, 지역에 선언된 변수를 지역변수
라고 한다.
var a = 1; // 전역스코프
function numberPrint() { // 지역스코프(함수스코프)
var a = 2; // 지역변수
return a;
};
console.log(numberPrint()); // 2
}
a
가 전역과 지역에 있지만, 가장 가까이 정의되어 있는 변수부터 따른다.접근 유효범위가 함수(Function) 단위이다.
let p=1;
function print() {
p=3;
console.log('내부:', p);
}
print(); // 3
console.log('외부: ', p); // 1
만약 지역스코프의 p=3
을 지운다면, Scope chain이 발생하여 해당 변수를 찾는다.
접근 유효범위가 브라켓{}
단위이다.
{
const a=1;
console.log(a); // 1
}
console.log(a); // ReferenceEroor: a is not defined
let
혹은 const
는 레퍼런스에러가 발생하나, var
는 호이스팅이 가능하여 에러가 발생하지 않는다.{
var a=1;
console.log(a); // 1
}
console.log(a); // 1