JavaScript에서 변수를 초기화하는 데 사용할 수 있는 세 가지 주요 키워드는 var
, let
, 그리고 const
입니다. 각각의 키워드는 변수를 선언하고 초기값을 할당하는 방식이 조금씩 다릅니다. 이러한 차이점에 대해 살펴보고 각 키워드의 장단점을 이해해보겠습니다.
var
var
키워드는 오래된 버전의 JavaScript에서 사용되었으며 함수 스코프를 갖습니다. 함수 스코프란 변수가 선언된 함수 내에서만 유효하다는 것을 의미합니다. 또한, var
로 선언된 변수는 호이스팅(hoisting)이 발생합니다. 호이스팅은 변수의 선언을 유효 범위의 최상단으로 끌어올리는 것을 말합니다.
// Example
function exampleFunction() {
if (true) {
var message = "Hello!";
}
console.log(message); // "Hello!", var는 함수 스코프를 가지므로 if 블록 외부에서도 접근 가능
}
let
ES6(2015)에서 도입된 let
은 블록 스코프를 갖습니다. 블록 스코프란 중괄호({}
)로 둘러싸인 영역 내에서 변수가 유효하다는 것을 의미합니다. let
으로 선언된 변수는 호이스팅이 발생하지만, 초기화되기 전까지 일시적인 temporal dead zone
에 갇히게 됩니다.
// Example
let x = 10;
if (x > 5) {
let result = "greater than 5";
console.log(result); // "greater than 5", 블록 스코프 내에서 변수 접근 가능
}
console.log(result); // Error: result is not defined, 블록 스코프 외부에서 변수에 접근 불가
const
const
키워드는 블록 스코프를 갖으며, 상수(constant)를 선언하는데 사용됩니다. 한번 할당된 값을 변경할 수 없으며, 할당 이후에는 재할당이 불가능합니다. 다만 객체나 배열과 같은 참조형 자료 구조의 경우에는 해당 객체나 배열의 내부 값은 변경할 수 있습니다.
// Example
const PI = 3.14;
PI = 3.1415; // Error: Assignment to constant variable, 상수는 재할당 불가
const person = { name: "Alice" };
person.name = "Bob"; // 가능, 참조형의 내부 값은 변경 가능
결론
변수를 선언하고 초기화하는 과정에서 var
, let
, const
각각의 특징을 고려하여 적절한 키워드를 선택하는 것이 중요합니다. let
과 const
는 ES6에서 도입되어 블록 스코프를 지원하므로, 코드 유지보수와 오류 방지를 위해 var
보다 더 안전하게 변수를 다룰 수 있습니다.
참조: