0Pricing
JavaScript Academy · 강의

전역 Symbol 레지스트리

Symbol.for와 keyFor로 Symbol을 공유합니다.

전역 Symbol 레지스트리은(는) CoddyKit의 무료 JavaScript Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 JavaScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. JavaScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

공유 레지스트리

전역 심벌 레지스트리를 사용하면 항상 고유한 심벌을 만드는 대신 키를 기준으로 프로그램 전체에서 공유되는 심벌을 만들 수 있습니다.

const a = Symbol.for("app.id")
const b = Symbol.for("app.id")
console.log(a === b)

Symbol.for

Symbol.for는 레지스트리에서 문자열 키로 심벌을 조회합니다. 해당 심벌이 있으면 반환하고, 없으면 새 심벌을 만들어 저장합니다.

const token = Symbol.for("token")
console.log(token.description)

공유되는 동일성

일반적인 Symbol 호출과 달리 같은 키를 사용한 두 번의 Symbol.for 호출은 완전히 같은 심벌을 반환하므로 서로 같다고 비교됩니다.

const x = Symbol.for("shared")
const y = Symbol.for("shared")
console.log(x === y)

Symbol과 비교하기

일반적인 Symbol은 항상 새롭고 고유한 심벌을 만들지만, Symbol.for는 같은 키에 대한 기존 레지스트리 항목을 재사용합니다.

const local1 = Symbol("k")
const local2 = Symbol("k")
const global1 = Symbol.for("k")
const global2 = Symbol.for("k")
console.log(local1 === local2)
console.log(global1 === global2)

Symbol.keyFor

Symbol.keyFor는 그 반대 작업을 수행합니다. 레지스트리 심벌을 전달하면 해당 심벌을 만들 때 사용한 문자열 키를 반환합니다.

const s = Symbol.for("config")
console.log(Symbol.keyFor(s))

keyFor와 로컬 심벌

레지스트리에 없는 심벌에 Symbol.keyFor를 사용하면 undefined가 반환됩니다. 이를 통해 심벌이 전역 심벌인지 확인할 수 있습니다.

const local = Symbol("private")
const global = Symbol.for("public")
console.log(Symbol.keyFor(local))
console.log(Symbol.keyFor(global))

모듈 간 공유

레지스트리는 서로 다른 모듈처럼 애플리케이션의 여러 부분에서도 공유되므로, 서로 잘 알려진 조정 키를 사용해야 할 때 유용합니다.

function getKey() { return Symbol.for("event.bus") }
console.log(getKey() === Symbol.for("event.bus"))

이름 지정 규칙

레지스트리는 전역이므로 다른 라이브러리와의 충돌을 피하려면 키에 접두사를 붙이십시오. 예를 들어 앱 이름을 네임스페이스로 사용할 수 있습니다.

const a = Symbol.for("myapp.user.id")
const b = Symbol.for("myapp.user.id")
console.log(a === b)

레지스트리의 지속성

키가 한 번 등록되면 이후 해당 키를 사용하는 모든 Symbol.for 호출이 프로그램의 수명 동안 같은 심벌을 반환합니다.

Symbol.for("once")
const again = Symbol.for("once")
console.log(Symbol.keyFor(again))

레지스트리를 사용할 때

서로 분리된 코드가 이름으로 같은 심벌에 동의해야 할 때 레지스트리를 사용하십시오. 고유성과 비공개성이 더 중요할 때는 일반적인 Symbol을 사용하십시오.

const sharedFlag = Symbol.for("feature.enabled")
const privateFlag = Symbol("feature.enabled")
console.log(sharedFlag === Symbol.for("feature.enabled"))
console.log(privateFlag === Symbol.for("feature.enabled"))

객체 키와 함께 사용하기

레지스트리 심벌도 객체 키로 사용할 수 있으므로, 협력하는 모듈이라면 심벌을 다시 가져와 공유 메타데이터를 읽을 수 있습니다.

const META = Symbol.for("meta")
const obj = { [META]: "shared data" }
console.log(obj[Symbol.for("meta")])

빠른 확인

레지스트리에 관한 지식을 확인해 보십시오.

복습

복습: 전역 레지스트리는 키를 기준으로 심벌을 공유합니다.

  • Symbol.for는 레지스트리 심벌을 재사용하거나 생성합니다
  • 같은 키는 같은 심벌을 반환합니다
  • Symbol.keyFor는 키를 반환하고, 로컬 심벌에는 undefined를 반환합니다
  • 충돌을 피하려면 키에 네임스페이스를 지정합니다
const a = Symbol.for("k")
console.log(Symbol.keyFor(a))

자주 묻는 질문

“전역 Symbol 레지스트리” 강의는 무료인가요?

네 — “전역 Symbol 레지스트리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 JavaScript Academy 강의 전체를 잠금 해제할 수 있습니다. JavaScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“전역 Symbol 레지스트리”에서 뭘 배우나요?

Symbol.for와 keyFor로 Symbol을 공유합니다. 브라우저에서 직접 실행하는 실습 코드로 JavaScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

JavaScript Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 JavaScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“전역 Symbol 레지스트리” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 JavaScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 JavaScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 고유한 Symbol 만들기
  2. 객체 키로 사용하는 Symbol
  3. 전역 Symbol 레지스트리
  4. 잘 알려진 Symbol
← JavaScript Academy(으)로 돌아가기