Symbol() 생성자

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.

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

같이 보기