"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript에서 parsInt의 8진수 해석 문제를 어떻게 방지할 수 있습니까?

JavaScript에서 parsInt의 8진수 해석 문제를 어떻게 방지할 수 있습니까?

2024년 12월 22일에 게시됨
검색:183

How Can I Avoid parseInt's Octal Interpretation Issues in JavaScript?

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진수 문자열로 변환

또 다른 접근 방식은 문자열을 구문 분석하기 전에 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