LHJ

I'm a FE developer.

7.4 블록 스코프

05 May 2020 » js_lj

let 과 const는 식별자를 블록 스코프에서 선언합니다.
5장에서 블록은 문을 중괄호로 묶은 것이라고 설명했습니다.
블록 스코프는 그 블록의 스코프에서만 보이는 식별자를 의미합니다.

console.log('before block');
{
	console.log('inside block');
	const x = 3;
	console.log(x); // 3
}
console.log(`outside block; x=${x}`); // ReferenceError: x는 정의되지 않았습니다.

앞의 예제에서는 독립 블록을 사용했습니다.
블록은 보통 if나 for 같은 제어문의 일부분으로 쓰이지만, 블록 그 자체로도 유효한 문법입니다.
x는 블록 안에서 정의됐고, 블록을 나가는 즉시 x도 스코프 밖으로 사라지므로 정의되지 않은 것으로 간주합니다.

NOTE_
4장에서 독립 블록에 현실적인 쓸모는 별로 없다고 언급한 것을 기억할 겁니다.
이 장에서 독립 블록을 써서 스코프를 관리하는 방법을 소개하겠지만, 필요한 경우는 드뭅니다.
이 장에서 독립 블록을 사용하는 이유는 스코프에 대해 이해하기 쉬워서입니다.