전역 스코프에서 어떤 변수든 let
이나 const
로 한번만 선언될 수 있다.
즉, let
또는 const
선언 후 전역 스코프에서 다시 선언하는 것이 불가능하다는 것이다.
하지만, 이전에 선언했더라도 코드 블록 내에서는 다시 선언하는 것이 가능하다.
if (조건) {
코드;
}
조건이 만족됐을 때 실행되는 코드가 {}
로 감싸져 있다.
이를 코드 블록이라고 한다.
const a = 1; // 초기 선언
if (true) {
let a = 2; // 블록 내 선언
console.log(a); // 2 출력됨
}
console.log(a); // 1 출력됨
전역 스코프에서 const a
를 선언했다.
그리고 코드 블록 내에서 다시 let a
를 선언했다.
이렇듯, 코드 블록 내에서는 재선언도 가능하고 상수 const
선언 후 변수 let
선언(또는 변수 선언 후 상수 선언) 또한 가능하다.
var a = 1; // 초기 선언
if (true) {
var a = 2; // 블록 내 선언
console.log(a); // 2 출력됨
}
console.log(a); // 2 출력됨
var의 경우는 원래 재선언이 가능하다.
하지만 const
와 let
과 달리, 전역 스코프에서 출력 시 가장 최근의 var 선언된 변수를 출력하게 된다.