변수에 접근할 수 있는 범위
어디에서든 해당 변수에 접근 가능 = 전역 변수
한정적인 범위에서 해당 변수에 접근 가능 = 지역 변수
지역 스코프에는 함수 스코프와 블록 스코프가 존재
undefined
에러 발생// 1. 함수 내부에서 선언
function greet() {
var student = 'hello';
}
console.log(student); // Uncaught ReferenceError: student is not defined
// 2. var로 선언하면 블록에 의한 범위 제한이 없음
if (true) {
var teacher = 'bye';
}
console.log(teacher) // bye
// 3. const, let은 블록 스코프를 따름
if (true) {
const teacher = 'bye';
}
console.log(teacher) // ReferenceError: teacher is not defined
let
과 const
로 선언된 변수가 블록 스코프 방식을 따름// var로 선언된 변수는 블록 스코프 밖에서 접근 가능
function counter() {
for (var i=0; i<9; i++) {
...
}
console.log(i)
}
hello(); // 9
// let, const는 블록 스코프를 따르므로 블록 밖에서는 변수 접근이 불가
function counter() {
for (let i=0; i<9; i++) {
...
}
console.log(i)
}
hello(); //ReferenceError: i is not defined