자바스크립트의 변수 선언 방식: const, var, let


자바스크립트(ECMAScript 6 이전)의 초기 단계에서는 변수를 선언하기 위해 주로 var 키워드가 사용되었습니다. 그러나 var로 선언된 변수의 범위(scope)와 변수 호이스팅(hoisting) 특성 때문에 여러 가지 문제가 있었습니다. 이러한 문제를 해결하기 위해 ES6부터는 새로운 변수 선언 키워드인 let과 const가 도입되었습니다. 이 글에서는 const, var와 let의 주요 차이점에 초점을 맞추어 설명하겠습니다.

자바스크립트의 변수 선언 방식: const, var, let



1. const (상수)

  • 선언과 동시에 최기화해야 합니다.
  • 재할당이 불가능합니다.
  • 블록 스코프를 가집니다.
const PI = 3.14;
PI = 3.15; // Error: Assignment to constant variable.



2. let (변수)

  • 선언과 동시에 초기화하지 않아도 됩니다.
  • 재할당이 가능합니다.
  • 블록 스코프를 가집니다.
let age = 25;
age = 30; // 재할당 가능



3. var (변수)

  • 선언과 동시에 초기화하지 않아도 됩니다.
  • 재할당이 가능합니다.
  • 함수 스코프를 가집니다.

var name = "John";
name = "Jane"; // 재할당 가능



스코프(Scope)와 차이

const와 let은 블록 스코프를 가지지만, var는 함수 스코프를 가집니다. 블록 스코프는 {}로 감싸진 영역을 의미하며, 함수 스코프는 함수 내부를 의미합니다.

function example() {
  if (true) {
    var varVariable = "I'm a var variable";
    let letVariable = "I'm a let variable";
    const constVariable = "I'm a const variable";
  }

  console.log(varVariable); // "I'm a var variable"
  console.log(letVariable); // Error: letVariable is not defined
  console.log(constVariable); // Error: constVariable is not defined
}

example();

위 예제에서 varVariable은 함수 스코프에 속하므로 함수 외부에서도 접근할 수 있지만, letVariable과 constVariable은 블록 스코프에 속하므로 함수 외부에서 접근할 수 없습니다.



권장 사용 방법

이용 우선 순위 : const > let > var

일반적으로 const를 기본으로 사용하고, 변수의 값이 변경될 필요가 있는 경우에만 let을 사용하는 것이 좋습니다. var는 스코프 관련 문제로 인해 사용을 자제하는 것이 좋습니다.



추가 정보: 호이스팅(Hoisting)

var와 let, const의 또 다른 차이점은 호이스팅 동작입니다. 호이스팅은 변수와 함수 선언이 코드 최상단으로 끌어올려지는 현상을 말합니다. var는 선언과 초기화가 호이스팅되지만, let과 const는 선언만 호이스팅되고 초기화는 호이스팅되지 않습니다. 이로 인해 var는 선언 전에 사용할 수 있지만, let과 const는 선언 전에 사용하면 참조 에러가 발생합니다.

이상으로 자바스크립트의 변수 선언 방식인 const, var, let에 대해 알아보았습니다. 변수 선언 시 이러한 차이점을 고려하여 적절한 키워드를 선택하는 것이 중요합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다