RangeError
JavaScript를 사용하면서 RangeError를 마주하는 것은 생각보다 드문 일입니다. JavaScript는 배열 범위를 벗어난 인덱스를 참조해도 undefined를 반환할 뿐, 오류를 반환하지는 않으니까요!
하지만 그것을 마주해 버렸습니다. 어느 부분에서 오류가 발생했는지 알 수 없는 환경에서 말이죠.
다행히도 굉장히 짧은 RangeError 문서를 통하여 핵심을 빠르게 파악할 수 있었고, Number 또는 String의 변환과 관련한 함수에 부적절한 값을 전달한 경우를 중심으로 RangeError가 반환되도록 되어 있음을 확인하였습니다.
- String.prototype.normalize()
- Number.prototype.toFixed()
- Number.prototype.toExponential()
- new Array(-1)
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/RangeError
작성된 코드 중에서 변환 관련한 함수는 toString을 이용한 진법 변환이 있었습니다. 요구사항에는 2진법부터 200만(!!!)진법까지 변환하도록 하는 요구사항이 있었고, 개발자 콘솔을 열어 toString의 진법으로 적당히 큰 수를 전달하니 2부터 36까지의 숫자만 허용된다는 오류 메시지를 맞이할 수 있었습니다.
0~9, A~Z로 표현 가능한 36진법까지만 공식적으로 지원하는 듯합니다. 나머지는 직접 만드는 수밖에요.
그러나
웬만해서는 런타임 오류가 발생하면 개발자 콘솔이든 터미널이든 어디서 문제가 발생했는지도 확인이 가능하므로 이 포스트가 크게 도움이 될 수 있을지는 모르겠습니다.
모든 걸 떠나서 200만진법을 요구하는 문제가 궁금하신 분은 여기로...
'함정 시리즈' 카테고리의 다른 글
[JavaScript] BigInt와 Number의 비교 연산 (0) | 2023.12.09 |
---|---|
[JavaScript] Number는 64비트인데 비트 연산은 32비트까지만? (0) | 2023.12.08 |
부동 소수점 연산의 함정 (0) | 2023.11.19 |
[JavaScript] 0과 -0 (JavaScript 정수 자료형의 함정) (0) | 2023.11.09 |
[JavaScript] Set.prototype.add()의 함정 (0) | 2023.11.07 |