[javascript] var, let, const의 변수 초기화 방식

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 각각의 특징을 고려하여 적절한 키워드를 선택하는 것이 중요합니다. letconst는 ES6에서 도입되어 블록 스코프를 지원하므로, 코드 유지보수와 오류 방지를 위해 var보다 더 안전하게 변수를 다룰 수 있습니다.

참조: