-
20221019 TIL 왜일까TIL 2022. 10. 19. 13:01
오늘 하루의 요약
http://34.64.107.232/jjals/cl-H9wkxrn 코딩을 하다보면 될 것 같은데 안되는 경우와 되면 안될 것 같은데 되는 경우가 있다.
오늘 코딩 도장 문제를 풀다가 돼야 될 것 같은데 안되는 경우가 있었다.
몇 개의 테스트 케이스에서 런타임 에러가 떠서 왜인지 확인을 하다가
입력값과 반환값 모두 long을 다루고 있는데 Integer.parseInt를 쓰고 있는 부분이 있어서 고쳤더니 해결이 되었다.
코딩 문제를 풀다보면 몇 케이스에서 런타임 에러가 뜨는 경우는 보통 자료형과 관련이 있는 경우가 많았다.
인자의 자료형을 꼭 먼저 확인하고, 만약 실수로 못봐서 자료형을 바꿀 때는 cmd f로 찾아서 하나하나 다 잘 바꿨는지 확인을 하자.
그리고 코딩을 하다가 테스트 코드를 짜고 코드를 일부만 구현한 줄 알았는데 돼서 놀랐다.
자바스크립트에서 배열 길이를 넘어서는 인덱스에 값을 넣으면 그 사이 값은 undefined가 된다.
이번 코드에서는 배열에서 undefined가 아닌 부분을 연결해야 했는데, join으로 연결을 하고
undefined를 걸러내는 작업을 어떻게 해야하나 고민하던 중에
그냥 join만으로 테스트가 통과해버렸다.
undefined + '1' 는 'undefined1'의 문자열이 되지만,
Array.prototype.join(separator)의 spec을 보면
https://262.ecma-international.org/5.1/#sec-15.4.4.5
If element0 is undefined or null, let R be the empty String; otherwise, Let R be ToString(element0).
라고 쓰여 있다.
따라서 배열의 undefined나 null은 join 메소드에서 빈 문자열이 된다.
console.log([1, , 3].join()); // '1,,3' console.log([1, undefined, 3].join()); // '1,,3'
항상 자료형을 잘 확인하고, 안될 것 같은 부분이 되면 spec을 찾아보자!
'TIL' 카테고리의 다른 글
20221021 TIL 의존성 주입이 왜 제어를 역전하는 방식인가 (0) 2022.10.21 20221020 TIL 멋진 개발자 되기 프로젝트 (0) 2022.10.20 20221018 TIL 반환을 하자!!! (0) 2022.10.18 20221016 TIL 신기한 JS세계 (0) 2022.10.17 20221015 TIL Node.js에서 패키지를 실행 방법 총정리 (0) 2022.10.17