JavaScript - 문제 미리보기
문제 662
hard
다음 코드의 결과는?
const mySet = new Set(["x", "y", "z"]);
console.log([...mySet.keys()]); // A
console.log([...mySet.values()]); // B
console.log(mySet.keys() === mySet.values()); // C
정답: C
Set에서
1) A와 B: Set은 키가 없기 때문에
2) C: 하지만
중요한 개념들:
1) Set의
2) 매번 새로운 Iterator 객체를 생성하므로 참조가 다름
3) 실제 개발에서는
keys()
와 values()
메서드는 특별한 특징을 가집니다:1) A와 B: Set은 키가 없기 때문에
keys()
와 values()
모두 같은 값들을 반환합니다. 둘 다 ["x", "y", "z"]
를 출력합니다.2) C: 하지만
mySet.keys() === mySet.values()
는 false
입니다. 이는 두 메서드가 서로 다른 Iterator 객체를 반환하기 때문입니다. JavaScript에서 객체는 참조로 비교되므로, 내용이 같아도 다른 객체이면 ===
비교 결과는 false가 됩니다.중요한 개념들:
1) Set의
keys()
와 values()
는 동일한 값을 반환 (Map 호환성을 위함)2) 매번 새로운 Iterator 객체를 생성하므로 참조가 다름
3) 실제 개발에서는
values()
나 직접 for...of
순회를 더 많이 사용
💡 학습 팁
이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.