{
const x = 1;
{
const y = 2;
console.log(x); //1
//=> const x = 1은 전체 코드블럭에서 유효하다. 즉 상위에 블록을 참조할수 있다.
}
console.log(x); //1
// => 같은블럭이기 때문에 const x = 1; 유효하다
console.log(y); //에러 발생
// => 블록 밖에서는 블록 안을 참조할수 없다.
}
// 전역 변수, 전역 스코프 (글로벌 변수, 글로벌 스코프)
const text = "global";
{
// 지역 변수(로컬변수), 지역 스코프(로컬스코프)
const text = "inside block1";
{
const text = "inside block2";
console.log(text); //'inside block2'
// => 만약 바로 상위에 없으면 더 상위를 참조
}
}
// 글로벌 변수는 앱이 종료될때까지 계속 메모리에 유지됨!
// => 이름 충돌과 메모리 측면에서도 좋지 않다.
// => 변수는 가급적 변수는 필요한 곳에서 선언해서 쓰는게 좋다.
const global = 1;
{
// 블럭 내부에서만 존재하고, 블럭이 끝나면 자동으로 소멸됨 (GC)
const local = 1;
}
function print() {
// 함수 내부에서도 블럭안에서 필요한 경우에는
// 필요한 곳에서! 블럭 안에서 변수를 선언하고 사용해야 함
if (true) {
let temp = 0;
}
}
💡 즉 변수는 최대한 필요한 곳에서 정의해야 한다! 💡