1997년 자바스크립트가 ECMAScript로 표준화된 이래로 JS에는 문자열, 숫자, 불리언, undefined, null, 객체의 6개 타입이 있었다.
심벌은 ES6에서 도입된 7번째 데이터 타입으로 다음의 특징이 있다.
따라서 주로 이름충돌의 위험이 없어야 하는 프로퍼티 키를 만들기 위해 사용하곤 한다. 이런 프로퍼티 키는 앞으로 추가될 어떤 프로퍼티 키와도 중복되지 않기 때문에, 하위호환성도 보장된다.
심벌 값은 Symbol
함수를 호출해 생성한다. 다른 원시값들과 다르게 리터럴 표기법이 불가능하다. 이렇게 생성된 심벌값은 외부로 노출되지 않아서 확인할 수도 없다.
const mySymbol = Symbol();
console.log(typeof mySymbol);
console.log(mySymbol);
값을 절대로 안보여준다.
Symbol()
을 보면 마치 생성자 함수같지만, Symbol함수는 new연산자를 쓰지 않는다. Symbol()함수는 애초에 생성자 함수도 아니다.
Symbol()
함수에는 문자열을 인수로 전달할 수 있다. 필수는 아님.. 이 문자열은 생성된 심벌 값에 대한 설명으로, 디버깅 용도로만 사용되고 심벌값 생성에는 어떠한 영향도 주지 않는다.