JavaScript의 8진수 위험:parseInt의 잘못된 동작에 대한 해결 방법
JavaScript의parseInt 함수는 앞에 0이 있는 숫자를 발견할 때 문제가 발생할 수 있습니다. 이 문제는 선행 0을 8진수로 해석하여 잘못된 결과를 초래하는 경향에서 비롯됩니다.
예:
parseInt('01'); // 1 parseInt('08'); // 0 (invalid octal digit)
해결 방법:
가장 간단한 해결책은 숫자의 밑수 또는 기수를 명시적으로 제공하는 것입니다. 이는 parseInt의 두 번째 매개변수를 사용하여 수행할 수 있습니다:
parseInt('08', 10); // 8 (specifying base 10)
또는 숫자 생성자를 사용하여 숫자를 구문 분석할 수 있습니다. 선행 0:
Number('08'); // 8
또 다른 접근 방식은 문자열을 구문 분석하기 전에 10진수로 변환하는 것입니다.
parseInt(parseInt('08', 8).toString(), 10); // 8 (convert octal to base 10)
정규 표현식을 사용하여 선행 0을 제거할 수 있습니다:
parseInt(/^0 (.*)$/gm('008')); // 8 (match and capture non-zero digits)
참고:
JavaScript 5판(ECMA-262)에서는parseInt의 동작이 변경되어 제거됩니다. 8진수 해석 문제. 그러나 이전 버전의 JavaScript와의 호환성을 위해 숫자 앞에 0이 있는 경우 위에서 언급한 해결 방법 중 하나를 사용하는 것이 좋습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3