백엔드

JavaScript enum

_민영 2023. 4. 4. 19:52

< 열거형 enum >

> enum은 상수 값 중에 비슷한 종류들을 묶어두기 위한 용도로 자주 사용된다.

많은 프로그래밍 언어들은 enum을 데이터 타입에 포함하고 있지만 자바스크립트는 포함하고 있지 않다.

하지만 조금이나마 비슷하게 작동할 수 있는 데이터를 자바스크립트에서도 간단하게 만들 수 있기는 하다.

 

> enum의 장점

  • 코드가 단순해지고 가독성이 좋아진다.
  • enum이란 이름 자체만으로 열거 의도를 분명히 알 수 있다.
  • 하나의 변수에 대해 고정값으로 이용이 가능하다.
  • 안정적이며 읽기 쉽고, 오류의 발생도 줄일 수 있다.
const Season = {
    SPRING: "spring",
    SUMMER: "summer",
    AUTUMN: "autumn",
    WINTER: "winter"
};

 

const Season = {
    SPRING: "spring",
    SUMMER: "summer",
    AUTUMN: "autumn",
    WINTER: "winter"
};

Season.SPRING = "summer";
console.log(Season.SPRING); // summer

하지만 문제가 있는데, "key": "value" 값을 가진 이 데이터의 값은 변경될 수 있다.

실제로 상수들의 집합 역할을 하는 enum의 역할을 수행하기 위해서는 선언한 값을 외부에서 변경할 수 없어야 한다.

 

-> Object.freeze() 메서드 사용하여 문제 해결

 

 

 

 

 

< Object.freeze >

> Object.freeze() 메서드는 객체를 동결해서 더 이상 변경하지 못하도록 한다.

그렇기 때문에 속성은 불변성을 지니게 된다.

const Season = {
    SPRING: "spring",
    SUMMER: "summer",
    AUTUMN: "autumn",
    WINTER: "winter"
};

Object.freeze(Season);

Season.SPRING = "summer";
console.log(Season.SPRING); // spring