Symbol.for()

Symbol.for(key) 메서드는 주어진 키를 사용해 런타임 범위의 심볼 레지스트리에서 존재하는 심볼을 찾고, 존재할 경우 이를 반환합니다. 존재하지 않는 경우에는 해당 키를 사용해 전역 심볼 레지스트리에 새로운 심볼을 생성합니다.

구문

Symbol.for(key);

파라미터

key

문자열, 필수. 심볼에 대한 키(심볼을 설명하기 위해서도 사용됨).

반환 값

주어진 키를 갖는 존재하는 심볼. 존재하지 않을 경우 새로운 심볼이 생성되고 반환됨.

설명

Symbol()과 대조적으로, Symbol.for() 함수는 전역 심볼 레지스트리 목록에서 사용 가능한 심볼을 생성합니다. Symbol.for()는 호출할 때마다 새로운 심볼을 생성하지는 않으며 레지스트리에서 주어진 key를 갖는 심볼이 이미 존재하는지를 먼저 확인합니다. 존재하는 경우 해당하는 심볼이 반환됩니다. 주어진 키를 갖는 심볼이 존재하지 않는 경우, Symbol.for()는 새로운 전역 심볼을 생성합니다.

전역 심볼 레지스트리

전역 심볼 레지스트리는 다음 레코드 구조를 갖는 목록이며 비어있는 상태로 초기화됩니다.

필드명
[[key]] 심볼을 구분하는데 사용되는 문자열 키.
[[symbol]] 전역으로 저장되는 심볼.

예제

Symbol.for() 사용하기

Symbol.for('foo'); // 새로운 전역 심볼을 생성
Symbol.for('foo'); // 이미 생성된 심볼을 반환

// 동일한 전역 심볼이지만 지역적으로는 그렇지 않음
Symbol.for('bar') === Symbol.for('bar'); // true
Symbol('bar') === Symbol('bar'); // false

// 키는 설명으로 사용되기도 함
var sym = Symbol.for('mario');
sym.toString(); // "Symbol(mario)"

전역 심볼 키와 다른 (라이브러리 코드) 전역 심볼의 이름 충돌을 피하려면, 심볼에 접두어를 붙이는 것이 좋습니다.

Symbol.for('mdn.foo');
Symbol.for('mdn.bar');

명세

Specification
ECMAScript Language Specification (ECMAScript)
# sec-symbol.for

브라우저 호환성

BCD tables only load in the browser

같이 보기