👋 Symbol 함수: for(), keyFor()
1. for()
-
글로벌
Symbol
레지스트리에{key: value}
형태로Symbol
을 저장파라미터()
의 문자열이Key
가 되고Symbol()
로 생성한 값이value
가 됨
const one = Symbol.for('sports'); console.log(one); // Symbol(sports) // 1. {key: value} 형태로 one에 설정함, one이 글로벌 Symbol 레지스트리에 저장됨 // 2. 파라미터인 'sports'가 key가 되고 Symbol()로 생성한 값이 value가 됨 // 3. Symbol("sports") 함수에서 파라미터가 주석이었던 것과는 차이가 있음
registry
: 등록, 기록
-
글로벌
Symbol
레지스트리는 공유 영역- 다른 오브젝트에서도 사용 가능
- 같은
key
가 존재하면 등록된 값을 사용
const one = Symbol.for("sports"); const two = Symbol.for("sports"); console.log(one === two); // true console.log(Symbol.for(true); // Symbol(true) // 1. one의 key 값과 two의 key값이 같으므로 Symbol 값을 생성하지 않고 one에 설정된 값을 사용 // 2. one === two 그래서 비교 결과가 true가 나옴 // 3. Symbol.for(true) true를 문자열로 반환하여 key 값으로 사용
2. keyFor()
- 글로벌
Symbol
레지스트리에서Symbol
의key
값을 구함 -
파라미터에
Symbol.for()
로 등록한Symbol
작성const one = Symbol.for('book'); const six = Symbol.keyFor(one); console.log(six); // book // 1. const six = Symbol.keyFor(one); 파라미터에 글로벌 Symbol 레지스트리에 등록한 Symbol을 작성함 // 2. one의 key 값인 "book"을 반환
Symbol key
값이 존재하면key
값을 반환하고 존재하지 않으면Undefined
반환