본문 바로가기
프로그래밍/자바스크립트

[자바스크립트] 상수 (const)와 심볼(Symbol)의 비교

by pentode 2023. 6. 5.

자바스크립트에서 바꿀 수 없는 값을 지정하기 위해서   const 와  Symbol 을 사용할 수 있습니다. 두 가지의 사용법과 차이점을 알아봅니다.

 

상수(const)

상수는 선언과 동시에 값을 지정하고, 이후로 변경이 불가능합니다. 중복 선언 또한 불가능합니다.

// 선언과 동시에 초기화 합니다.
const num = 5;

// 이후에 값을 바꾸려고 하면 에러가 발생합니다.
num = 10;

// 중복 선언을 하려고 하면 에러가 발생합니다.
const num = 7;

 

심볼(Symbol)

심볼은 값을 바꿀 수 없으면서 유일한 값을 만듭니다. 한번 만들어진 값은 자신외에 어떤 값과도 같지 않습니다.

// 심볼을 하나 생성합니다.
const SUN = Symbol();

// 심볼 생성시 인자값을 줄 수 있습니다.
const MON = Symbol("Monday");

// 인자가 같은 심볼을 만들어도 같은 값이 아닙니다.
const TUE = Symbol("Monday");

// false가 출력됩니다.
if(MON === TUE) {
    console.log("true");
} else (
    console.log("false");
}

심볼 생성시 사용된 인자는 프로그램 수행에 영향을 미치지 않고, 디버깅 목적으로만 사용됩니다.

 

사용시 차이점

상수는 프로그램 상에서 사용되는 변하지 않는 값, 일반적으로 매직 넘버라고 불리는 값들을 저장하기 위해서 많이 사용됩니다. 예로 수학의 파이(3.14) 값 같은 것이 있겠습니다.

심볼은 유일한 값을 가지는 특징을 이용해서 열거형 값을 지정하는데 사용할 수 있습니다. 상수를 사용해서 열거형을 만드는것보다 안전합니다.

// 파이값 상수로 지정
const PI = 3.14;

//  상수를 사용해서 열거 데이터 만들기
const SUN = 0;

// 열거 데이터 비교 - 아래 모두 "DAY = SUN"을 출력한다.
let DAY = SUN;

if(DAY === SUN) {
    console.log("DAY = SUN");
}

if(DAY === 0) {
    console.log("DAY = SUN");
}

// 심볼을 사용해서 열거 데이터 만들기
const MON = Symbol();

// 열거 데이터 비교
let DAY1 = MON;

if(DAY1 === MON) {
    console.log("DAY1 = MON");
}

열거 데이터를 만들 경우 심볼을 사용하면 심볼외에 다른 값을 사용할 수 없게 되므로 오류를 줄일 수 있을것입니다.

반응형