자바스크립트 블록 유효 범위 변수(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를 사용하는 것이 좋습니다.