현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

parseInt() 함수는 문자열 아규먼트를 파싱하고, 특정 radix(진수: 수의 진법 체계에 기준이 되는 값)의 정수를 리턴합니다.

구문

parseInt(string, radix);

파라메터

string
파싱될 값. 만약 문자열이 string 이 아니면, string 으로 변환됩니다.( ToString 추상 연산을 사용하여) 문자열 내에서 맨 앞에 있는 공백은 무시됩니다.
radix
위의 언급된 문자열의 radix(진수를 나타내는 기준)를 표시하는 2와 36 사이의 정수 값. 일반적으로 사용되는 10진법에서는 10을 명시합니다. 예측 가능한 실행을 보장하고, 가독성을 위해 항상 이 파라메터를 명시하도록 합니다. 보통 radix 값이 명시되지 않았을 때 10으로 디폴트 값이 세팅되며, 다른 구현들은 다른 결과들을 만들어냅니다. 

리턴 값

주어진 문자열로부터 파싱된 정수. 만약 첫 글자가 숫자로 변환될 수 없다면, 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  

브라우저 호환성

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) ? (Yes)
Parses leading-zero strings as decimal, not octal (Yes) 21 (Yes) (in standards mode) ? (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Parses leading-zero strings as decimal, not octal ? ? 21 ? ? ?

참조

문서 태그 및 공헌자

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