Symbol() 생성자

Symbol() 함수는 타입 Symbol의 원시 값을 반환합니다.

시도해보기

구문

js
Symbol()
Symbol(description)

참고: Symbol()은 오직 new를 사용하지 않고 호출해야 합니다. new와 함께 생성하려하면 TypeError가 발생합니다.

매개변수

description Optional

문자열. 디버깅에는 사용할 수 있지만 심볼 자체에 접근하기 위해 사용할 수 없는, 심볼에 대한 설명입니다.

예제

Symbol 생성하기

새로운 원시 심볼을 만들기 위해서는 아래와 같이 설명으로 사용할 선택적 문자열과 함께 Symbol()을 사용하면 됩니다.

js
const sym1 = Symbol();
const sym2 = Symbol("foo");
const sym3 = Symbol("foo");

위의 코드는 세 개의 새로운 심볼을 생성합니다. Symbol("foo")는 문자열 "foo"를 강제로 심볼로 만들지 않습니다. 매번 새로운 심볼을 생성합니다.

js
Symbol("foo") === Symbol("foo"); // false

new Symbol()

new 연산자를 사용한 아래 구문은 TypeError를 발생시킵니다.

js
const sym = new Symbol(); // TypeError

이는 작성자가 새 심볼 값 대신 명시적인 Symbol 래퍼 개체를 만드는 것을 방지하며 원시 데이터 타입을 중심으로 명시적인 래퍼 개체를 만드는 것이 일반적으로 가능하기 때문에 놀랄 수 있습니다(예: new Boolean, new String and new Number).

정말로 Symbol 래퍼 객체를 생성하려면 Object() 함수를 사용할 수 있습니다.

js
const sym = Symbol("foo");
const symObj = Object(sym);
typeof sym; // "symbol"
typeof symObj; // "object"

명세서

Specification
ECMAScript Language Specification
# sec-symbol-constructor

브라우저 호환성

BCD tables only load in the browser

같이 보기