자바스크립트 블록 유효 범위 변수(let, const)
자바스크립트는 ES6(ES2015)부터 블록 유효 범위 변수인 let
과 const
를 도입했습니다. 이들은 기존에 사용되던 var
와 달리 좀 더 엄격한 변수 선언 규칙을 갖고 있으며, 블록 유효 범위를 가지기 때문에 코드의 가독성과 유지보수성을 높여줍니다.
let
let
은 블록 유효 범위를 가지는 변수입니다. 블록은 중괄호 {}
로 표시되는 코드 영역을 의미하며, if
, for
, while
등의 제어문 또는 함수로 생성된 스코프에서만 유효합니다. 이는 변수가 블록을 벗어나면 메모리에서 해제되어 자동으로 가비지 컬렉션 됨을 의미합니다.
{
let name = "John";
console.log(name); // 출력: John
}
console.log(name); // 오류: name is not defined
let
으로 선언한 변수는 재할당이 가능합니다.
let count = 0;
count = 1; // 변수 값 재할당
console.log(count); // 출력: 1
const
const
는 상수를 선언하는 데 사용됩니다. 선언 시에 초기값을 할당하고 한 번 할당된 값은 변경할 수 없습니다. 블록 유효 범위를 가지며, let
과 마찬가지로 블록 외부에서 접근할 수 없습니다.
{
const PI = 3.14;
console.log(PI); // 출력: 3.14
}
console.log(PI); // 오류: PI is not defined
const
로 선언한 변수는 재할당이 불가능합니다.
const name = "John";
name = "Jane"; // 오류: Assignment to constant variable
사용 시 주의사항
let
과const
는 hoisting 현상을 일으키지 않습니다. 따라서 변수를 선언하기 전에 사용하면 오류가 발생합니다.let
과const
는 블록 유효 범위를 가지기 때문에 변수의 스코프를 신중하게 관리해야 합니다.const
로 선언한 객체와 배열은 값이 변경되지 않지만, 객체 내부의 속성이나 배열의 요소는 수정 가능합니다.
const person = {
name: "John",
age: 30
};
person.age = 31; // 가능: 객체 내부의 속성 수정
console.log(person); // 출력: { name: "John", age: 31 }
const numbers = [1, 2, 3];
numbers.push(4); // 가능: 배열에 요소 추가
console.log(numbers); // 출력: [1, 2, 3, 4]
결론
블록 유효 범위 변수 let
과 const
는 자바스크립트 코드를 더욱 안전하고 가독성 있게 작성할 수 있도록 도와줍니다. var
보다 엄격한 규칙을 가지고 있으며, 변수의 스코프를 명확하게 정의하는 데 도움이 됩니다. 재할당이 필요한 경우 let
을 사용하고, 변경이 없는 상수를 선언할 때는 const
를 사용하는 것이 좋습니다.