질문 1. Number.EPSILON을 사용하는 이유와 등장배경을 설명해주세요.

EPSILON은 1과 1보다 큰 숫자 중에서 가장 작은 숫자와의 차이를 반환하는데 즉, 아주 작은 수를 의미한다.

자바스크립트의 숫자 타입의 값은 부동소수점으로 산술 연산을 처리하는데 이는 2진법으로 변환했을 때 무한소수가 되어 미세한 오차가 발생하는 문제가 있다.

EPSILON은 부동소수점으로 인해 발생하는 오차를 해결하기 위해 사용하는데

예를 들어 a와 b를 뺀 값의 절대값이 EPSILON보다 작으면 같은 수로 처리되도록 로직을 구성하여 오차를 해결할 수 있다.

0.1 + 0.2 === 0.3; //false

function isEqual(a,b) {
	return MAth.abs(a -b) < Number.EPSILON;
}
isEqual(0.1 + 0.2,3) //true

질문 2. Set 객체는 A와 Map객체는 B와 유사합니다. A와 B가 각각 무엇인지 말씀해주시고, 그에 따라 Set 객체와 A, Map 객체와 B의 차이점을 설명해주세요.

Set 객체는 배열과 비교할 수 있다.

Set은 중복되지 않는 유일한 값의 집합(중복된 값 저장 안함), 인덱스가 없음 → 인덱스로 요소에 접근 불가, 요소 순서 중요하지 않음

배열은 동일한 값을 중복하여 포함 가능, 요소 순서에 의미가 있음, 인덱스로 요소에 접근 가능


Map은 객체와 비교할 수 있음

Map은 객체를 포함한 모든 값을 키로 사용 가능, 이터러블이다, 개수 확인은 size 프로퍼티로 확인

객체는 문자열 또는 심벌 값을 키로 사용, 이터러블이 아님, .length 프로퍼티로 개수 확인 → Object.keys(obj).length

프로퍼티 키를 문자열로 만들어서 .length프로퍼티를 사용한다

질문 3. Set과 Map 객체가 순회 가능한 이유를 설명해주시고, 순회 순서에 대해 얘기해주세요

Set과 Map은 이터러블이므로 for…of문으로 순회하거나 forEach 메서드를 사용하여 순회할 수 있음.

Set과 Map은 요소 순서에 의미를 갖지 않지만 요소가 추가된 순서를 따르는데 이는 다른 이터러블의 순회와 호환성을 유지하기 위함이다.

질문 4. Set과 Map 객체의 요소를 추가하는 방법의 차이를 설명해주시고, 삭제 메서드 delete와 clear에 대해 설명해주세요.