I. WeakMapWeakSet 관련

1. 가비지 컬렉션

function myFunction() {
	const myVar = 1; // 🧹 함수 실행 후 다음 가비지 컬렉션 때
	console.log(myVar);
}

myFunction();
let myObj1 = { a: 1, b: 2 };

myObj1 = null; // 🧹 다음 가비지 컬렉션 때
let myArr = [
	{ a: 1, b: 2 },
	{ a: 3, b: 4 },
	{ a: 5, b: 6 } // 🧹 pop 후 다음 가비지 컬렉션 때
];

myArr.pop();

2. WeakMap & WeakSet

const itemWM = new WeakMap();
const itemWS = new WeakSet();

let obj1 = { name: 'keyboard', price: 50000 };
let obj2 = { name: 'mouse', price: 40000 }

itemWM.set(obj1, '신상품');
itemWM.set(obj2, '시즌한정상품');

itemWS.add(obj1);
itemWS.add(obj2);

obj2 = null; // 🧹 다음 가비지 컬렉션 때 객체, 그리고 맵에서 해당 값 사라짐

3. 💡 ES14부터는 WeakMap에 심볼도 키로 사용 가능