JS에는 다음을 포함하여 데이터를 숫자로 변환하는 세 가지 유형의 다섯 가지 방법이 있습니다.
• JS의 기본 데이터형인 Coercion은 이와 같은 방식으로 해당 데이터형(Number(v))으로 변환된다.
• 기본 함수, 이 두 함수는 서로 다른 결과를 가집니다(parseInt(v,radix),parseFloat(v))
•암시적 변환, JS는 실행 중에 변수를 해당 유형(비트 계산, 수학적 계산)으로 변환합니다.
변환된 원래 값은 간단히 객체, 특수값, 문자열 3가지 카테고리로 나눌 수도 있습니다.
JS의 특수 값은 다음과 같습니다.
•undefine, undefine, 변수를 선언했지만 값을 할당하지 않은 경우 또는 객체에 존재하지 않는 속성의 값이 이것이다.
•NaN/Infinity, 이는 두 개의 완고한 "숫자"(typeof == 숫자)로, 각각 숫자가 아닌 숫자와 무한한 숫자를 나타냅니다. 쓸모없는 것 같습니다. 숫자로의 변환이 실패하면 반환 값은 기본적으로 NaN입니다.
• null, 값이 0인 개체로 사용됩니다(typeof == 개체).
• true/false, 부울 값은 true 또는 false를 나타내며 1/0과 동일합니다.
문자열의 경우 내용에 따라 세분화될 수도 있습니다. JS 숫자식에 따르면 합법과 불법으로 구분할 수 있습니다. 법적 번호를 분류하는 방법에는 여러 가지가 있습니다.
•부호: 양수 부호, 음수 부호, 부호 없음
•기본: 8진수, 10진수, 16진수
•과학적 표기법
•소수, 정수, 소수의 약어
위의 분류를 바탕으로 다양한 방법과 수치 변환 결과를 테스트하기 위해 데모를 만들었습니다. 아래 스크린샷은 크롬에서의 변환입니다.
결과를 보면, 비트 계산만 어떤 값이든 유한수(isFinite)로 변환할 수 있습니다. 수학적 계산과 강제 변환의 결과는 동일합니다.
특수값의 변환은 원래의 값과 변환방법에 관련됩니다. 모든 parseInt/parseFloat 변환이 실패하고 NaN을 반환합니다.
•NaN/undefine은 다른 방법으로 NaN으로 변환됩니다.
•Infinity는 ParseInt에 의해 NaN으로 변환되며 나머지 메소드는 해당 값을 변경하지 않습니다.
• null/false/true는 parseInt/parseFloat로 변환할 수 없으며 NaN을 반환합니다.
문자열의 변환 분석은 주로 변환 방법에 따라 달라지지만 모든 방법은 8진수로 표현되는 숫자를 지원하지 않고 해당하는 10진수로 처리됩니다.
• 논리 계산은 음수 16진수를 제외한 유효한 표현식을 변환하고 잘못된 표현식은 0을 반환합니다.
• 수학적 계산/숫자는 논리 계산과 유사하지만 빈 문자열 이외의 잘못된 표현식은 NaN을 반환하지 않습니다.
•parseInt는 정수 부분만 유지하지만 잘못된 표현식의 경우 문자열 앞에 유효한 정수(10진수, 16진수, 과학적 표기법 제외) 부분을 가져와 변환하고, 그렇지 않으면 NaN을 반환합니다.
•parseFloat는 소수 부분을 인식하고 유지할 수 있으며 16진수를 지원하지 않는다는 점을 제외하면 parseInt와 유사합니다.