
다시 시작하는 자바스크립트 - SymbolJavascript2023. 4. 22. 20:31
Table of Contents
728x90
반응형
헷갈리는 것들만 따로 정리할 예정.
deep dive 책을 함께 공부함.
14. Symbol
- Symbol : 유일한 key를 생성할 수 있음.
const map = new Map();
const key1 = "key";
const key2 = "key";
map.set(key1, "Hello");
console.log(map.get(key2));
// Hello
// 문자열이 똑같은 값이니까 key1을 넣어도 key2로 동일한 "Hello"를 가지고 나올 수 있음.
// 원시 타입이라 값이 똑같아서 동일한 key라고 간주할 수 있는 것.
console.log(key1 === key2);
// true
Symbol을 사용시 비록 이름은 똑같지만 서로 다른 유일한 키가 생성되는 것을 볼 수 있음.
const key3 = Symbol("key");
const key4 = Symbol("key");
map.set(key3, "Nice to meet you!");
console.log(map.get(key4);
// undefined
console.log(map.get(key3);
// Nice to meet you!
console.log(key3 === key4);
// false
동일한 이름으로 하나의 키를 사용하고 싶다면,전역 심벌 레지스트리(Global Symbol Registry)
const k1 = Symbol.for("key");
const k2 = Symbol.for("key");
console.log(k1 === k2);
// true
console.log(Symbol.keyFor(k1));
// key
// 해당 Symbol의 문자열을 알고 싶다면 Symbol의 keyFor을 이용하면 됨.
// 전역 심벌 레지스트리에 보관된 심볼에 한해서만 이름을 가지고 올 수 있음.
Symbol은 Map에서 유용하게 사용할 수 있음.
조금 더 유일한 key를 만들어야 할 때 주로 사용.
Map 뿐만 아니라 object에서도 Symbol을 활용해볼 수 있음.
const obj = { [k1] : "hello" , [ Symbol("key")] : 1 };
console.log(obj);
// { [Symbol(key)]: 'hello', [Symbol(key)]: 1 }
console.log(obj[k1]);
// hello
console.log(obj[Symbol("key")]);
// undefined
// 위의 Symbol과 아래의 Symbol은 전혀 다른 key이기 때문에 undefined가 뜸.
- Object에서 Symbol이 사용되는 예를 보여줬는데, key를 대괄호로 감싸는 이유는? :
객체 키는 단순 문자열이 아닌 경우에는 항상 대괄호로 감싸서 사용해야 함.
오브젝트 외부에 선언된 변수에 담긴 값을 오브젝트의 프로퍼티 네임(키)으로 사용하려면 대괄호로 감싸 가져와야 함.
728x90
반응형
'Javascript' 카테고리의 다른 글
다시 시작하는 자바스크립트 - 주석, 에러처리, 모듈 (0) | 2023.04.24 |
---|---|
다시 시작하는 자바스크립트 - Operators(연산자들) (0) | 2023.04.23 |
다시 시작하는 자바스크립트 - Set를 이용한 Quiz (0) | 2023.04.22 |
다시 시작하는 자바스크립트 - Set과 Map (2) | 2023.04.21 |
다시 시작하는 자바스크립트 - 구조 분해 할당 (0) | 2023.04.21 |
@min' :: 개발을 하자
github : https://github.com/dnjfht
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!