[ES6] Symbol

sangminnn·2020년 4월 6일
0

글로 정리하는 ES6

목록 보기
5/11
post-thumbnail

Symbol 이란 ...?

먼저 이 Symbol에 대해 간단히 설명하자면

주로 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키(property key)를 만들기 위해 사용하는 고유의 값

이라고 할 수 있다.

Javascript에는 총 6가지의 타입이 존재하는데,

이는 5가지의 원시 타입(Primitive Type)

  • String
  • Number
  • Boolean
  • null
  • undefined

Object 라는 객체 타입(Object Type) 이 존재한다.

Symbol은 이 6가지 타입에 이은 7번째 타입으로, 이는 원시 타입에 속한다.

그러면 이걸 왜 만들었는지...?

ES6의 모든 추가 내용이 그랬던 것처럼 어떤 필요에 의해서 Symbol이라는 것이 생겼을 것이다.

그렇다면 왜 Symbol을 만들었을까 ?

이에 대해서 알아보도록 하자.

Symbol의 기능 및 사용

일단 Symbol의 사용법에 대해 알아보면

위에서도 언급했던 것과 같이 원시 타입(Primitive Type)이기 때문에

new 생성자를 붙혀서 생성할 수는 없고, 단일 형태로 선언해주어야 생성이 가능하다.

또한, Symbol은 type이기 때문에 당연하게도 typeof를 하게 된다면 Symbol type이 나타난다.

// X
let symbol = new Symbol("I am Symbol"); // Symbol is not a constructor
// O
let symbol = Symbol("I am Symbol");

console.log(typeof symbol) // "symbol"

그렇다면 고유한 값이라는 것이 어떤 의미인지 코드로 확인해보자.

let symbolOne = Symbol("Symbol");
let symbolTwo = Symbol("Symbol");

console.log(symbolOne); // Symbol("Symbol")
console.log(symbolTwo); // Symbol("Symbol")

console.log(symbolOne === symbolTwo); // false

위의 코드를 보면, symbolOnesymbolTwo 는 동일한 값이다.

하지만 둘이 같은 값인지에 대한 console 값으로는 false 가 나왔다.

이와 같이 동일한 값을 가지고 있음에도 불구하고, 서로가 다른 각각 고유한 값으로 인식이 되는 것이 Symbol의 기능이다.

마치며 ...

사실 이 Symbol은 내용을 이해하고 나서

그러면 도대체 이걸 어디에다가 쓰지 ?

라는 생각을 하게되었다.

실제 프로젝트에서 사용된 예시는 한번도 본적이 없기 때문이다.

찾아보니 이 Symbol은 library를 만들 때에나 사용되고, 보통의 경우에는 사용할 일이 없다고 한다.

자세한 Symbol의 내부 값을 확인하고 싶다면 콘솔창에 console.dir(Symbol) 을 쳐보면 자세히 알수 있다.

++) Symbol에 대한 내용의 대부분은 _Jbee님의 https://jaeyeophan.github.io/2017/04/20/ES6-8-Symbol/ 를 보고 공부한 내용입니다.

profile
생각하며 코딩하려고 노력하는 개발자가 되겠습니다.

0개의 댓글