더북(TheBook)

코드를 실행하면 변수 a는 전역 스코프여서 블록문 내부나 외부에서 전부 참조할 수 있습니다. 그러나 변수 b는 블록문 내부에 선언한 지역 스코프여서 블록문 내부에서는 참조에 문제가 없지만, 외부에서는 참조 오류가 발생하는 것을 확인할 수 있습니다.

TIP | 전역 스코프에 선언한 변수를 전역 변수, 지역 스코프에 선언한 변수를 지역 변수라고 합니다.

블록 스코프는 오직 let, const 키워드에서만 발생하므로 같은 코드를 var 키워드로만 바꿔 실행하면 참조 오류가 발생하지 않습니다. var 키워드는 함수 스코프 방식으로만 스코프를 나누기 때문에 다음 코드에서는 변수 a, b 모두 전역 스코프에서 선언한 것과 마찬가지입니다.

10/04/block_scope2.js

var a = 10;
{
  var b = 20;
  console.log(`코드 블록 내부 a: ${a}`);
  console.log(`코드 블록 내부 b: ${b}`);
}
console.log(`코드 블록 외부 a: ${a}`);
console.log(`코드 블록 외부 b: ${b}`);

실행결과

코드 블록 내부 a: 10
코드 블록 내부 b: 20
코드 블록 외부 a: 10
코드 블록 외부 b: 20
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.