변수의 유효범위 - scope라고 한다
변수가 사용되는 범위, 규칙을 정한다
const, let의 유효범위 - 2개의 키워드를 가진 유효범위는 블록 스코프라고한다
블록이란, {} 안에 선언된 변수는 그대로 공간안에서만 사용 가능하다
밖으로 넘어가면 나머지 값은 알 수 없게 된다
// 블록
{
//여기가 블록
const name = 'dubi';
console.log(name);
}
//밖에서 안으로
//중첩
// 블록
{
//여기가 블록
const name = 'dubi';
console.log(name);
}
//밖에서 사용 시 name의 존재를 알 수 없음
console.log(name);
//중첩
//밖에서 사용 시 함수를 먼저 할당해주면 블록 밖이라도 사용가능
let age = 27;
{
age++;
console.log(age);
}
console.log(age);
//중첩
var는 ES5까지 사용되었지만 ES6부터는 let, const를 사용해서 코딩을 진행하고있다
함수 스코프보다 블록 스코프가 좀 더 직관적이다
function() {}
함수가 선언되는 영역이 유효범위가 된다
// 블록 - var에서 a를 할당했으므로 블록 안에 a++ 값도 돌 수있다
(function() {
a++;
console.log(a);
})();
// 블록
console.log(a);
잘못된 예시
(function();{
var b = 0;
console.log(b);
})();
// function 범위를 벗어낫기 때문에 아래 b++; 값은 동작하지 않는다
b++;
console.log(b);