JavaScript는 **총 6개의 원시 타입(Number, String, Boolean, null, undefined, Symbol)과 1개의 객체 타입(Object)**을 가지고 있다. 이번 포스팅에서 다룰 심볼(Symbol) 타입도 6개의 원시 타입 중 하나로, ES6 버전의 JavaScript에서 새롭게 추가되었다.  일반적으로 심볼 타입은 객체의 프로퍼티 키를 고유하게 설정함으로써 프로퍼티 키의 충돌을 방지하기 위해 사용된다. 다른 타입에 비해 흔하게 사용되는 타입은 아니지만, JavaScript에는 심볼 타입에 대한 이해가 전제되어야 이해하고 사용할 수 있는 몇몇 문법(ex. iterable 객체)들도 있기 때문에 공부해두는 것이 좋다.

Symbol(description) 함수는 고유한 Symbol 값을 반환함, 객체 프로퍼티에 대한 식별자로 사용될 수 있음 Symbol은 Number, String 과 같은 원시 데이터 타입이지만, 고유하기 때문에 어느것도 서로 같지 않음(변경이 불가능한 원시 값)

console.log(Symbol() === Symbol()); // false
console.log(Object.is(Symbol(), Symbol())); // false

const symbol = Symbol(7);
console.log(symbol === 7); // false
console.log(symbol.description); // 7