epascarello 가 주석에서 언급했듯이 다음은 이 동작을 설명 하는 MDN 설명서 의 관련 부분입니다 .
parseInt가 지정된 기수의 숫자가 아닌 문자를 발견하면 해당 문자와 모든 후속 문자를 무시하고 해당 지점까지 구문 분석 된 정수 값을 반환합니다. parseInt는 숫자를 정수 값으로 자릅니다. 선행 및 후행 공백이 허용됩니다.
결과적으로 parseInt("abcdefghij", 16)
실제로 구문 분석 "abcdef"
하고 중지합니다. 따라서 결과 :
0xABCDEF = 11259375
이를 알면 NaN
16 진수가 아닌 문자열로 호출 될 때 대신 반환되는 사용자 지정 함수를 사용할 수 있습니다 .
function parseTrueHexa(str) {
return str.match(/^ *[a-f0-9]+ *$/i) ? parseInt(str, 16) : NaN;
}
console.log("parseInt() says:");
console.log(parseInt("aBcD", 16));
console.log(parseInt("abcdz", 16));
console.log("parseTrueHexa() says:");
console.log(parseTrueHexa("aBcD"));
console.log(parseTrueHexa("abcdz"));
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다