js parseInt 의 함정 분석 소결
var a = parseInt("09"), b = Number("09");
radix 나 radix 를 0 으로 지정 하지 않 은 상황 에서 parseInt 은 10 진법 으로 전환 합 니 다.그러나 이것 은 어떤 경우 에 약간 특수 합 니 다.*string 의 값 이'0x'로 시작 하면 parseInt 는 16 진법 으로 전환 합 니 다.*string 의 값 이"0"으로 시작 하면 parseInt 는 8 진법 으로 변 환 됩 니 다.다시 시작 하 는 코드 는'09'가'0'으로 시작 하기 때문에 parseInt 는 8 진법 으로 전환 하지만'9'는 합 법 적 인 8 진법 값(8 진법 은 0-78 개의 숫자 만 있 음)이 아니 기 때문에 전환 결 과 는 0 이다.이 함몰 을 피 하려 면 radix:
alert(parseInt("10", 2)); // outputs '2'
다른 네티즌 들 의 보충 을 강제 적 으로 지정 할 수 있 습 니 다.코드 보기:
alert(parseInt("09", 10)); // outputs '9'
첫 번 째 문 구 는 0,두 번 째 문 구 는 1,28617.코드 를 계속 볼 수 있 습 니 다
alert(parseInt(0.000001));
alert(parseInt(0.0000001));
모두 0 을 출력 해 야 기대 에 부 합 됩 니 다.ECMA-262 규범 을 보면 parseInt 에서 먼저 toString 방법 을 호출 합 니 다.문 제 는 점점 뚜렷 해 졌 다
alert(parseInt('0.000001'));
alert(parseInt('0.0000001'));
첫 번 째 문 구 는 원래 의 출력 이 고 두 번 째 문 구 는 1e-7 을 출력 한다.ECMA-262 9.8.1 ToString Applied to the Number Type 1 절 을 계속 뒤 져 보면 문득 깨 달 았 다
alert(0.000001);
alert(0.0000001);
위 는 V8 엔진 number-tostring 의 단원 테스트 스 크 립 트 로 ECMA 규범 을 잘 해석 했다.소결:1e-6 이하 의 수치 에 있어 서 ToString 은 자동 으로 과학 계수 법 으로 변 환 됩 니 다.따라서 parseInt 방법 은 매개 변수 유형 이 불확실 할 때 한 층 포장 하 는 것 이 좋 습 니 다. [radix]) The parseInt method syntax has these parts: Part Description [numstring] Required. A string to convert into a number. [radix] Optional. A value between 2 and 36 indicating the base of the number contained in numstring. If not supplied,strings with a prefix of'0x'are considered hexidecimal and strings with a prefix of'0'are considered octal.All other strings are considered decimal.parseInt 는 날짜 에 있 습 니 다.예 를 들 어 2005-10-08 은 정규 로 년 월 일 문자열 을 풀 고 parseInt 로 숫자 를 풀 어 다른 용도 로 사용 합 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JS] 빌트인 객체와 전역 객체표준 빌트인 객체는 ECMAScript 사양에 정의된 객체로 애플리케이션 전역의 공통 기능을 제공한다. 별도의 선언 없이 전역 변수처럼 언제나 참조할 수 있다. 사용자 정의 객체는 표준 빌트인 객체와 호스트 객체처럼...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.