이 번역은 완료되지 않았습니다. 이 문서를 번역해 주세요.

parseInt() 함수는 문자열 인자의 구문을 분석해 특정 진수(수의 진법 체계에 기준이 되는 값)의 정수를 리턴합니다.

구문

parseInt(string, radix);

매개변수

string
분석할 값. 만약 string이 문자열이 아니면 문자열로 변환(ToString 추상 연산을 사용)합니다. 문자열 내에서 맨 앞에 있는 공백은 무시됩니다.
radix
string이 표현하는 정수를 나타내는 2와 36 사이의 진수(수의 진법 체계에 기준이 되는 값).

반환 값

주어진 문자열로부터 분석한 정수. 첫 글자를 숫자로 변환할 수 없다면 NaN을 반환합니다.

설명

parseInt 함수는 첫 번째 인자를 문자열로 변환하고 파싱합니다. 그리고 정수나 NaN을 리턴합니다. 만약 NaN이 아니면, 특정 radix(진수) 값으로 첫번째 아규먼트를 대신하는 십진 수의 값이 리턴됩니다. 예를 들면, 10을 나타내는 radix 는 십진수를 8 (8진), 16(16진), 등등으로 변환합니다. 10 이상의 radix 값들은 9보다 큰 알파벳 글자로 나타내집니다. 예를 들면,  16 진수(16을 기준)는, A부터 F까지 통용됩니다.  

만약 parseInt 함수가 특정 진수를 나타내는 숫자가 아닌 글자를 마주치게 되면, 이 글자와 계속되는 글자들은 전부 무시되며, 파싱된 정수값을 리턴합니다. parseInt 함수는 정수값으로 숫자를 잘라버립니다. 맨 앞의 공백과 그 뒤의 공백들은 허용됩니다. 

만약 radixundefined 이거나 0이라면, (또는 없다면), JavaScript 는 아래와 같이 임의 처리합니다. :

  • 인풋 값 string 이 "0x" 나 "0X"로 시작한다면, radix 는 16(16진)이며, 나머지 문자열은 파싱됩니다.
  • 인풋 값 string 이 "0"으로 시작한다면,  radix 는 8(8진)이거나, 10(십진)입니다. 정확히 이 선택된 radix 는 구현 의존적적입니다. ECMAScript 5 는 10(십진)이 사용되는 것을 명시하지만, 모든 브라우저가 아직 이렇게 되지 않습니다. 이러한 이유로 항상 parseInt를 사용할 때는 radix 값을 명시해야 합니다.
  • 인풋 값 string 이 다른 값으로 시작 된다면, radix 는 10(십진)입니다. 

첫 번째 글자가 숫자로 변환될 수 없다면, parseInt 는 NaN을 리턴할 것입니다.

연산의 경우, NaN 값은 어떠한 radix 숫자도 아닙니다. parseInt 값이 NaN인지 알아내기 위해  isNaN 함수를 호출할 수 있습니다. 만약 NaN이 산술 연산으로 넘겨진다면, 이 연산의 결과 또한 NaN이 될 것입니다. 

특정 진수의 스트링 리터럴로 숫자를 변환하는 것은 intValue.toString(radix)를 사용합니다.

parseInt 사용하기

다음의 예제는 모두 15를 리턴합니다.

parseInt(" 0xF", 16);
parseInt(" F", 16);
parseInt("17", 8);
parseInt(021, 8);
parseInt("015", 10);   // parseInt(015, 10);  13이 리턴될 것입니다.
parseInt(15.99, 10);
parseInt("15,123", 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15*3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);
parseInt("12", 13);

다음의 예제는 모두 NaN을 리턴합니다.

parseInt("Hello", 8); // 전부 숫자가 아님.
parseInt("546", 2);   // 숫자는 2진법 표현이 불가능함.

다음의 예제는 모두 -15을 리턴합니다. :

parseInt("-F", 16);
parseInt("-0F", 16);
parseInt("-0XF", 16);
parseInt(-15.1, 10)
parseInt(" -17", 8);
parseInt(" -15", 10);
parseInt("-1111", 2);
parseInt("-15e1", 10);
parseInt("-12", 13);

다음의 예제는 모두 224를 리턴합니다.

parseInt("0e0", 16);

radix가 없는 8진 해석

비록 ECMAScript 3 에서 권장되지 않고, ECMAScript 5 에서 금지되었지만, 많은 구현들은 0으로 시작하는 8진수 문자열을 해석합니다. 다음의 코드는 8진 결과를 가질 수도 있으며, 10진의 결과를 가질 수도 있습니다. 항상 이러한 명확하지 않은 표현은 피하고 radix를 명시하도록 합니다.

parseInt("0e0"); // 0
parseInt("08"); // 0, '8' 은 8진수가 아니다.

ECMAScript 5는 8진수 해석을 삭제하였습니다.

ECMAScript 5의 parseInt 함수 스펙은 더 이상 0 으로 시작하는 8진수 값의 문자열을 다루는 구현을 허용하지 않습니다. ECMAScript 5는 다음을 발표했습니다. :

parseInt 함수는 특정 radix(진수)값에 따라 문자열 아규먼트 내용의 해석을 하고, 그 영향을 받은 정수 값을 생성합니다. 문자열 내에서 시작되는 부분에 위치한 공백은 무시됩니다. 만약 radix 값이 정의되지 않거나, 0이라면, 이것은 10진수로 여겨집니다.  0x 이나 0X 으로 시작되는 숫자 일 때는 16진수로 여겨집니다.

ECMAScript 3 와의 차이는 8진수의 해석을 허용하고 있느냐의 차이입니다.

많은 구현들이 2013부터 이 방식을 채택하고 있지 않아 왔습니다. 오래된 브라우저는 지원되어야 하기 때문에 항상 radix 값을 명시 해야합니다. 

더 엄격한 파싱 함수

가끔은 int 값을 파싱할 때 더 엄격한 방식을 이용하는 것이유용합니다. 일반적인 표현식이 도움이 될 것입니다. :

filterInt = function (value) {
  if(/^(\-|\+)?([0-9]+|Infinity)$/.test(value))
    return Number(value);
  return NaN;
}

console.log(filterInt('421'));               // 421
console.log(filterInt('-421'));              // -421
console.log(filterInt('+421'));              // 421
console.log(filterInt('Infinity'));          // Infinity
console.log(filterInt('421e+0'));            // NaN
console.log(filterInt('421hop'));            // NaN
console.log(filterInt('hop1.61803398875'));  // NaN
console.log(filterInt('1.61803398875'));     // NaN

명세

Specification Status Comment
ECMAScript 1st Edition (ECMA-262) Standard 초기 정의.
ECMAScript 5.1 (ECMA-262)
The definition of 'parseInt' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'parseInt' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'parseInt' in that specification.
Draft  

브라우저 호환성

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Basic supportChrome Full support YesEdge Full support YesFirefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes
Parses leading-zero strings are decimal, not octalChrome Full support 23Edge Full support YesFirefox Full support 21IE Full support 9Opera Full support YesSafari Full support 6WebView Android Full support 4.4Chrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 21Opera Android Full support YesSafari iOS Full support 6Samsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

참조

문서 태그 및 공헌자

이 페이지의 공헌자: urty5656, magnoliaa
최종 변경자: urty5656,