본문 바로가기
코드잇 스프린트 6기/JS Q.R 스터디

[JS Q.R 모임] 4번째 온라인 모임

by 학습하는 청년 2024. 5. 2.

일시 : 2024-05-02, 17시

참여 : 5명

 

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

자바스크립트의 정수는 2진법으로 오차 없이 저장 가능하지만 부동소수점을 표현하기 위해 가장 널리 쓰이는 표준인 IEEE 754는 2진법으로 변환했을 때 무한소수가 되어 미세한 오차라 발생할 수밖에 없는 구조적 한계가 존재한다. 이는 자바스크립트가 부동소수점 방식으로 산술 연산을 진행하기에 나타나는 현상이다. 이를 해결하기 위해, Number.EPSILON을 사용한다.

 

부동소수점

부동소수점 또는 떠돌이 소수점 방식은 실수를 컴퓨터상에서 근사하여 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것으로, 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현한다.
// 자바스크립트는 소수점 연산에서는 정확하지 않다.
0.1 + 0.2 === 0.3; // false

function isEqual(a, b) {
  // a와 b를 뺀 값의 절대값이 Number.EPSILON보다 작으면 같은 수로 인정한다.
  return Math.abs(a - b) < Number.EPSILON;
}

isEqual(0.1 + 0.2, 0.3); // true

[질문 2] 현재 시간을 나타내는 Date의 메소드들과 그 차이는 무엇인가요?

1. Date.prototype.toDateString()

사람이 읽을 수 있는 형식의 문자열로 Date 객체의 날짜를 반환한다.

 

2. Date.prototype.toTimeString()

사람이 읽을 수 있는 형식으로 Date 객체의 시간을 표현한 문자열로 반환한다.

 

3. Date.prototype.toISOString()

ISO 8601 형식으로 Date 객체의 날짜와 시간을 표현한 문자열을 반환한다.

 

4.Date.prototype.toLocaleString()

Date 객체의 날짜와 시간을 표현한 문자열을 반환한다. 인수를 생략한 경우 브라우저가 동작 중인 시스템의 로캘을 적용한다.

const today = new Date('2024/5/2/17:00');

today.toString(); // 'Thu May 02 2024 17:00:00 GMT+0900 (한국 표준시)'

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


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

Set과 Map은 모두 이터러블이므로 for...of 문으로 순회할 수 있다. 모두 요소의 순서에 의미를 갖지 않지만, 다른 이터러블의 순회와 호환성을 유지하기 위해 요소가 추가된 순서대로 순회한다. 

 

이터러블이기에 갖는 특성은 무엇인가?

Set 객체와 Map 객체 모두 이터러블이기에 반복문으로 순회가 가능하며, 디스트럭처링과 스프레드 문법을 사용할 수 있다. 그러나 Map 객체는 이터러블이면서 동시에 이터레이터인 객체를 반환하는 메서드(keys, values, entries)를 제공한다는 점에서 차이가 있다.


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

Set은 add 메서드를 통해서만 추가할 수 있고, Map은 set함수를 통해서만 추가할 수 있다. Set과 Map 모두는 delete 메서드를 통해 요소를 하나씩 지울 수 있으며, 메서드 체인으로 연속적으로 삭제할 수 있다. 또한 clear메서드를 통해 모든 프로퍼티를 한 번에 삭제할 수 있다.


셀프 피드백

2번 질문 같은 경우, 제대로 확인하지 않아서 잘못된 질문을 만들었다. 모임시작 30분전에서야 발견했다. 질문을 정정해야 한다.

 

질문을 뽑기 어려운 경우에는, 질문이 지엽적으로 나오거나 범위가 좁게 만들어질 수밖에 없다. 오늘 같은 경우가 그러하다. 이런 경우에는, 리디야 할리 문제를 가져와서 문제로 출제하도록 하자.

댓글