자바스크립트 심볼(Symbol)

많은 사람들이 자바스크립트에서 주로 사용되는 데이터 타입에는 문자열, 숫자, 불린 등이 있다고 생각하겠지만, 실제로는 더 많은 데이터 타입이 존재합니다. 그 중 하나가 바로 심볼(Symbol)입니다.

심볼의 개념

심볼은 ES6(ECMAScript 2015)에서 도입된 새로운 원시 데이터 타입입니다. 심볼은 유일성을 보장하기 위해 사용되며, 다른 어떠한 심볼과도 동일하지 않은 고유한 값입니다. 일반적으로 문자열을 사용하여 심볼을 생성하며, Symbol()을 호출하여 생성할 수도 있습니다.

// 문자열을 사용하여 심볼 생성
const mySymbol = Symbol('mySymbol');

// Symbol()을 호출하여 심볼 생성
const anotherSymbol = Symbol();

심볼의 유용한 특징

  1. 유일성: 만들어진 모든 심볼은 다른 어떠한 심볼과도 동일하지 않습니다. 이는 심볼을 사용하여 충돌이 없는 고유한 식별자를 만들 수 있다는 것을 의미합니다.

  2. 객체 프로퍼티 식별자: 객체의 프로퍼티 이름으로 심볼을 사용할 수 있습니다. 이는 프로퍼티 이름의 충돌을 피하고, 다른 라이브러리나 프레임워크와의 간섭을 방지할 수 있습니다.

  3. 은닉성: 심볼은 외부에 노출되지 않는 특징을 가지고 있어, 외부로부터 심볼을 검색하거나 조작하기 어렵습니다. 이를 이용하여 객체의 프로퍼티를 숨기는 데 유용하게 사용될 수 있습니다.

const obj = {
  [mySymbol]: 'Hello',
  hiddenProperty: 'Hidden Value'
};

console.log(obj[mySymbol]);  // 'Hello'
console.log(obj.hiddenProperty);  // 'Hidden Value'

for (const key in obj) {
  console.log(key);  // hiddenProperty만 출력됨
}

결론

자바스크립트 심볼(Symbol)은 유일성과 은닉성을 가진 새로운 데이터 타입으로, 충돌을 피하고 고유한 식별자를 생성하는 데 유용합니다. 심볼은 객체 프로퍼티 식별자로 사용될 수 있어, 프로퍼티의 충돌을 방지하고 객체를 더욱 안전하게 사용할 수 있습니다. 기존에는 잘 알려지지 않았지만, 심볼은 많은 유용한 기능을 제공하므로, 자바스크립트 개발자는 심볼을 알아두고 활용하는 것이 좋습니다.