본문 바로가기

javascript4

new Date()의 argument로 dateString을 사용할 때는 "yyyy-mm-dd"형식을 사용하자 javascript의 new Date() 생성자는 매개변수로 들어오는 string을 꽤나 유연하게 파싱한다. 시간에 대한 정보 없이 날짜에 대한 정보만을 string으로 넘겨봤을 때, 아래와 같은 형식들을 모두 수용한다. (현재 위치는 한국이고, 아래 코드들은 크롬 브라우저 콘솔에서 실행했다.) yyyy-mm-dd new Date("2023-07-22") // Sat Jul 22 2023 09:00:00 GMT+0900 (Korean Standard Time) yyyy/mm/dd new Date("2023/07/22") // Sat Jul 22 2023 00:00:00 GMT+0900 (Korean Standard Time) yyyy.mm.dd new Date("2023.07.22") // Sat Jul.. 2023. 7. 22.
timeoutID는 그냥 숫자였다. 최근 회사에서 시작한 프로젝트를 타입스크립트로 작성하면서 알게되는 새로운 사실들이 있다. 그 중 하나가 setTimeout이 리턴하는 값이 단순한 숫자라는 것이었다. const timeoutId: number = setTimeout(() => {}, 1000) 나는 이 값이 무슨 해시값이라도 되는 거라고 생각했었는데, 콘솔을 찍어보니 그냥 43 같은 아주 작고 단순한 숫자였다. id pool setTimeout 과 setInterval 이 리턴하는 id는 Window나 Worker 같은 Object가 가지고 있는 id pool에서 발급되는 값이다. 두 메소드가 각각 리턴하는 id는 사실 동일한 pool에서 발급되기 때문에, setTimeout으로 리턴받은 id를 clearInterval로 제거하는 등의 .. 2023. 7. 19.
빈 배열에 every() 를 실행하면 언제나 true를 리턴한다. function checkElement() {}; const processedArray = []; const result = processedArray.every(checkElement); 어떤 연산을 거쳐 선언된 배열 processedArray를 every()를 이용해 처리하던 도중 processedArray에 길이가 0인 빈 배열 이 들어가는 경우가 발생했다. 의도했던 바는 아니었지만, "배열의 모든(every) element가 true일때만 true를 리턴"하는 every의 의미로 미루어보아, 단 하나의 true 값도 리턴하지 않는 이 statement는 false를 리턴하리라 기대했다. 그러나 내 예상과는 다르게, processedArray.every(checkElement)는 true를 리턴했다.. 2023. 7. 15.
Array(n)에는 map()을 쓸 수 없다. Array() Constructor로 생성한 배열 객체 Array() Constructor의 인자로 한개의 값만 넣어주면, length 프로퍼티를 가진 배열 객체가 하나 생성된다. 예를 들어 길이 5의 배열 객체를 생성하면 다음과 같다. Array(5) 이제 5개의 빈 값(empty)들을 가지고 있는 이 배열 객체에, 모든 element를 숫자 5로 채워넣고자 map을 실행하면 어떻게 될까? Array(5).map(() => 5) 우리는 [5, 5, 5, 5, 5] 와 같은 결과를 기대했지만 아쉽게도 이 배열의 형태는 전혀 변하지 않았다. 왜 그럴까? 그 이유는 Array.prototype.map이 배열의 "빈 값"은 건너뛰도록 설계되었기 때문이다. (이런 "빈 값"이 들어있는 배열을 Sparse Arr.. 2023. 7. 14.