aboutsummaryrefslogtreecommitdiff
path: root/files
diff options
context:
space:
mode:
authoralattalatta <urty5656@gmail.com>2021-11-21 21:51:19 +0900
committerhochan Lee <hochan049@gmail.com>2021-12-14 01:02:01 +0900
commit340005cf0505a16d18fb63bedb42cc0db0e87a38 (patch)
tree9b1d8b4f9bf2fd222d87cedcc447ee8ebb3739f4 /files
parent751187f65c9eec62df17f46166f1b9faaec4c61e (diff)
downloadtranslated-content-340005cf0505a16d18fb63bedb42cc0db0e87a38.tar.gz
translated-content-340005cf0505a16d18fb63bedb42cc0db0e87a38.tar.bz2
translated-content-340005cf0505a16d18fb63bedb42cc0db0e87a38.zip
Update parseFloat/parseInt
Diffstat (limited to 'files')
-rw-r--r--files/ko/web/javascript/reference/global_objects/number/parsefloat/index.md77
-rw-r--r--files/ko/web/javascript/reference/global_objects/number/parseint/index.md82
-rw-r--r--files/ko/web/javascript/reference/global_objects/parsefloat/index.md155
-rw-r--r--files/ko/web/javascript/reference/global_objects/parseint/index.md308
4 files changed, 286 insertions, 336 deletions
diff --git a/files/ko/web/javascript/reference/global_objects/number/parsefloat/index.md b/files/ko/web/javascript/reference/global_objects/number/parsefloat/index.md
index 0b57723065..fbc26f76e5 100644
--- a/files/ko/web/javascript/reference/global_objects/number/parsefloat/index.md
+++ b/files/ko/web/javascript/reference/global_objects/number/parsefloat/index.md
@@ -6,72 +6,55 @@ tags:
- JavaScript
- Method
- Number
+ - Polyfill
+browser-compat: javascript.builtins.Number.parseFloat
translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseFloat
---
-<div>{{JSRef}}</div>
+{{JSRef}}
-<p><strong><code>Number.parseFloat()</code></strong> 메서드는 문자열을 분석해 부동소수점 실수로 반환합니다.</p>
+**`Number.parseFloat()`** 메서드는 주어진 값을 필요한 경우 문자열로 변환한 후 부동소수점 실수로 파싱해 반환합니다. 숫자를 파싱할 수 없는 경우 {{jsxref("NaN")}}을 반환합니다.
-<div>{{EmbedInteractiveExample("pages/js/number-parsefloat.html")}}</div>
+{{EmbedInteractiveExample("pages/js/number-parsefloat.html")}}
+## 구문
+```js
+Number.parseFloat(string)
+```
-<h2 id="구문">구문</h2>
+### 매개변수
-<pre class="syntaxbox">Number.parseFloat(<var>string</var>)</pre>
+- `string`
+ - : 파싱할 값입니다. 문자열이 아닐 경우 [`ToString`](https://tc39.es/ecma262/#sec-tostring) 추상 연산을 사용해 문자열로 변환합니다. 문자열의 선행 공백은 무시합니다.
-<h3 id="매개변수">매개변수</h3>
+### 반환 값
-<p>{{page("ko/docs/Web/JavaScript/Reference/Global_Objects/parseFloat", "매개변수")}}</p>
+주어진 문자열에서 파싱한 부동소수점 실수입니다.
-<h3 id="반환_값">반환 값</h3>
+공백이 아닌 첫 글자를 숫자로 변환할 수 없는 경우 {{jsxref("NaN")}}을 반환합니다.
-<p>{{page("ko/docs/Web/JavaScript/Reference/Global_Objects/parseFloat", "반환 값")}}</p>
+## 설명
-<h2 id="설명">설명</h2>
+### Number.parseFloat vs parseFloat
-<p><code>Number.parseFloat()</code> 메서드는 전역 {{jsxref("parseFloat", "parseFloat()")}} 함수와 같은 기능을 가지고 있습니다.</p>
+`Number.parseFloat()`은 전역 {{jsxref("parseFloat", "parseFloat()")}} 함수와 같은 기능을 가지고 있습니다.
-<pre>Number.parseFloat === parseFloat; // true</pre>
+```js
+Number.parseFloat === parseFloat; // true
+```
-<p><code>Number.parseFloat()는</code> ECMAScript 2015에서 전역 범위의 모듈화를 위해 추가됐습니다. 상세한 정보와 예제는 {{jsxref("parseFloat", "parseFloat()")}}를 참고하세요.</p>
+`Number.parseFloat()`은 ECMAScript 2015에서 전역 객체의 모듈화를 위해 추가됐습니다. 상세한 정보와 예제는 {{jsxref("parseFloat", "parseFloat()")}}를 참고하세요.
-<h2 id="폴리필">폴리필</h2>
+## 명세
-<pre class="brush: js">if (Number.parseFloat === undefined) {
-  Number.parseFloat = parseFloat;
-}
-</pre>
+{{Specifications}}
-<h2 id="명세">명세</h2>
+## 브라우저 호환성
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Status</th>
- <th scope="col">Comment</th>
- </tr>
- <tr>
- <td>{{SpecName('ES2015', '#sec-number.parsefloat', 'Number.parseFloat')}}</td>
- <td>{{Spec2('ES2015')}}</td>
- <td>Initial definition.</td>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-number.parsefloat', 'Number.parseFloat')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td> </td>
- </tr>
- </tbody>
-</table>
+{{Compat}}
-<h2 id="브라우저_호환성">브라우저 호환성</h2>
+## 같이 보기
-<div>{{Compat("javascript.builtins.Number.parseFloat")}}</div>
-
-<h2 id="같이_보기">같이 보기</h2>
-
-<ul>
- <li>메서드가 속한 {{jsxref("Number")}} 객체.</li>
- <li>전역 {{jsxref("parseFloat", "parseFloat()")}} 메서드.</li>
-</ul>
+- `core-js`의 [`Number.parseFloat` 폴리필](https://github.com/zloirock/core-js#ecmascript-number)
+- 이 메서드가 속한 {{jsxref("Number")}} 객체
+- 전역 {{jsxref("parseFloat", "parseFloat()")}} 메서드
diff --git a/files/ko/web/javascript/reference/global_objects/number/parseint/index.md b/files/ko/web/javascript/reference/global_objects/number/parseint/index.md
index 0b0a052016..54d0f3f06f 100644
--- a/files/ko/web/javascript/reference/global_objects/number/parseint/index.md
+++ b/files/ko/web/javascript/reference/global_objects/number/parseint/index.md
@@ -6,73 +6,63 @@ tags:
- JavaScript
- Method
- Number
- - Reference
+ - Polyfill
+browser-compat: javascript.builtins.Number.parseInt
translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseInt
---
-<div>{{JSRef}}</div>
+{{JSRef}}
-<p><strong><code>Number.parseInt()</code></strong> 메서드는 문자열을 분석하고 특정 진수를 사용한 정수로 변환해 반환합니다.</p>
+**`Number.parseInt()`** 메서드는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환합니다.
-<div>{{EmbedInteractiveExample("pages/js/number-parseint.html")}}</div>
+{{EmbedInteractiveExample("pages/js/number-parseint.html", "taller")}}
+## 구문
+```js
+Number.parseInt(string)
+Number.parseInt(string, radix)
+```
-<h2 id="구문">구문</h2>
+### 매개변수
-<pre class="syntaxbox">Number.parseInt(<var>string,</var>[ <var>radix</var>])
-</pre>
+- `string`
+ - : 파싱할 값입니다. 문자열이 아닐 경우 [`ToString`](https://tc39.es/ecma262/#sec-tostring) 추상 연산을 사용해 문자열로 변환합니다. 문자열의 선행 공백은 무시합니다.
+- `radix` {{optional_inline}}
+ - : `string`의 진수를 나타내는 `2`부터 `36`까지의 정수입니다.
-<h3 id="매개변수">매개변수</h3>
+ `radix`를 생략하거나 `0`을 지정한 경우, `string`이 `0x` 또는 `0X`로 시작하는 경우 `16`을 지정한 것으로 취급하고, 그 외의 경우 `10`으로 취급합니다.
-<div>{{page("ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt", "매개변수")}}</div>
+### 반환 값
-<h3 id="반환_값">반환 값</h3>
+주어진 `string`에서 파싱한 정수입니다.
-<p>{{page("ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt", "반환 값")}}</p>
+다음과 같은 경우에는 {{jsxref("NaN")}}을 반환합니다.
-<h2 id="설명">설명</h2>
+- `radix`가 2보다 작거나 36보다 큰 경우.
+- 공백이 아닌 첫 문자를 숫자로 변환할 수 없는 경우.
-<p><code>Number.parseInt()</code> 메서드는 전역 {{jsxref("parseInt", "parseInt()")}} 함수와 같은 기능을 가지고 있습니다.</p>
+## 설명
-<pre class="brush: js">Number.parseInt === parseInt; // true</pre>
+### Number.parseInt vs parseInt
-<p><code>Number.parseInt()</code>는 ECMAScript 2015에서 전역 범위의 모듈화를 위해 추가됐습니다. 상세한 정보와 예제는 {{jsxref("parseInt", "parseInt()")}}를 참고하세요.</p>
+`Number.parseInt()`는 전역 {{jsxref("parseInt", "parseInt()")}} 함수와 같은 기능을 가지고 있습니다.
-<h2 id="폴리필">폴리필</h2>
+```js
+Number.parseInt === parseInt; // true
+```
-<pre class="brush: js">if (Number.parseInt === undefined) {
- Number.parseInt = window.parseInt;
-}</pre>
+`Number.parseInt()`는 ECMAScript 2015에서 전역 객체의 모듈화를 위해 추가됐습니다. 상세한 정보와 예제는 {{jsxref("parseInt", "parseInt()")}}를 참고하세요.
-<h2 id="명세">명세</h2>
+## 명세
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Status</th>
- <th scope="col">Comment</th>
- </tr>
- <tr>
- <td>{{SpecName('ES6', '#sec-number.parseint', 'Number.parseInt')}}</td>
- <td>{{Spec2('ES6')}}</td>
- <td>Initial definition.</td>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-number.parseint', 'Number.parseInt')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td> </td>
- </tr>
- </tbody>
-</table>
+{{Specifications}}
-<h2 id="브라우저_호환성">브라우저 호환성</h2>
+## 브라우저 호환성
-<div>{{Compat("javascript.builtins.Number.parseInt")}}</div>
+{{Compat}}
-<h2 id="같이_보기">같이 보기</h2>
+## 같이 보기
-<ul>
- <li>메서드가 속한 {{jsxref("Number")}} 객체.</li>
- <li>전역 {{jsxref("parseInt", "parseInt()")}} 메서드.</li>
-</ul>
+- `core-js`의 [`Number.parseInt` 폴리필](https://github.com/zloirock/core-js#ecmascript-number)
+- 이 메서드가 속한 {{jsxref("Number")}} 객체
+- 전역 {{jsxref("parseInt", "parseInt()")}} 메서드
diff --git a/files/ko/web/javascript/reference/global_objects/parsefloat/index.md b/files/ko/web/javascript/reference/global_objects/parsefloat/index.md
index bfc5b2d41e..9b9b6aa2f6 100644
--- a/files/ko/web/javascript/reference/global_objects/parsefloat/index.md
+++ b/files/ko/web/javascript/reference/global_objects/parsefloat/index.md
@@ -3,118 +3,93 @@ title: parseFloat()
slug: Web/JavaScript/Reference/Global_Objects/parseFloat
tags:
- JavaScript
+ - Method
- Reference
-translation_of: Web/JavaScript/Reference/Global_Objects/parseFloat
+browser-compat: javascript.builtins.parseFloat
---
-<div>{{jsSidebar("Objects")}}</div>
+{{jsSidebar("Objects")}}
-<p><code><strong>parseFloat()</strong></code> 함수는 문자열을 분석해 부동소수점 실수로 반환합니다.</p>
+**`parseFloat()`** 함수는 주어진 값을 필요한 경우 문자열로 변환한 후 부동소수점 실수로 파싱해 반환합니다.
-<div>{{EmbedInteractiveExample("pages/js/globalprops-parsefloat.html")}}</div>
+{{EmbedInteractiveExample("pages/js/globalprops-parsefloat.html")}}
+## 구문
+```js
+parseFloat(string)
+```
-<h2 id="구문">구문</h2>
+### 매개변수
-<pre class="syntaxbox">parseFloat(<em>value</em>)</pre>
+- `string`
+ - : 파싱할 값입니다. 문자열이 아닐 경우 [`ToString`](https://tc39.es/ecma262/#sec-tostring) 추상 연산을 사용해 문자열로 변환합니다. 문자열의 선행 공백은 무시합니다.
-<h3 id="매개변수">매개변수</h3>
+### 반환 값
-<dl>
- <dt><code>value</code></dt>
- <dd>변환할 값.</dd>
-</dl>
+주어진 문자열에서 파싱한 부동소수점 실수입니다.
-<h3 id="반환_값">반환 값</h3>
+공백이 아닌 첫 글자를 숫자로 변환할 수 없는 경우 {{jsxref("NaN")}}을 반환합니다.
-<p>주어진 값에서 분석한 부동소수점 수. 분석할 수 없으면 {{jsxref("NaN")}}.</p>
+## 설명
-<h2 id="설명">설명</h2>
+`parseFloat`은 전역 객체의 함수 속성입니다.
-<p><code>parseFloat()</code>은 최상위 함수로 어떠한 객체와도 연결되어 있지 않습니다.</p>
+- `parseFloat`이 양의 부호(`+`), 음의 부호(`-` U+002D HYPHEN-MINUS), 숫자(`0`-`9`), 소수점(`.`), 지수(`e`, `E`) 외의 다른 글자를 발견할 경우 해당 문자 이전까지의 문자만 사용해 파싱하며 문제의 문자와 그 이후는 모두 무시합니다.
+- 소수점이 두 개 이상 존재할 경우 두 번째 소수점 역시 위와 같이 무시됩니다.
+- 주어진 값의 선행 및 후행 공백은 무시합니다.
+- 주어진 값의 첫 글자를 숫자로 변환할 수 없는 경우 {{jsxref("NaN")}}을 반환합니다.
+- `parseFloat`은 {{jsxref("Infinity")}}도 파싱 후 반환할 수 있습니다.
+- `parseFloat`은 {{jsxref("BigInt")}} 구문을 {{jsxref("Number")}}로 반환하므로 정확도를 잃습니다. 마지막 `n` 문자를 무시하기 때문입니다.
-<p><code>parseFloat()</code>은 매개변수로 주어진 값 분석하고 부동소수점 수를 반환합니다. 기호(+, -), 숫자(0-9), 소수점 또는 지수 이외의 문자를 발견하면, 그 전까지의 결과만 반환하고 문제의 문자와 그 이후는 모두 무시합니다. 위치에 상관하지 않고, 그런 문자를 발견하면 {{jsxref("NaN")}}을 반환하는 더 엄격한 방법이 필요하면 {{jsxref("Number", "Number(value)")}}를 고려하세요.</p>
+더 엄격한 파싱이 필요하면, 유효하지 않은 문자가 어디에나 존재할 시 {{jsxref("NaN")}}을 반환하는 {{jsxref("Number", "Number(value)")}}를 고려하세요.
-<p>값이 문자열인데 첫 번째 문자를 숫자로 변환할 수 없는 경우 <code>parseFloat()</code>도 <code>NaN</code>을 반환합니다.</p>
+`parseFloat`은 {{jsxref("Object.toString", "toString")}}이나 {{jsxref("Object.valueOf", "valueOf")}} 메서드를 구현한 객체도 파싱할 수 있습니다. 이 때의 결과는 객체의 `toString()`, `valueOf()`의 반환 값을 `parseFloat`에 전달한 것과 동일합니다.
-<p>수학적으로 <code>NaN</code>은 어떤 진법에도 속하지 않습니다. {{jsxref("isNaN", "isNaN()")}} 함수를 사용해 결과 값이 <code>NaN</code>인지 확인할 수 있습니다. <code>NaN</code>을 다른 값과의 수학 연산에 사용하면 그 결과도 언제나 <code>NaN</code>이 됩니다.</p>
+## 예제
-<p><code>parseFloat()</code>은 {{jsxref("Infinity")}}도 분석 및 반환할 수 있습니다. {{jsxref("isFinite", "isFinite()")}} 함수를 사용해 결과 값이 유한수(<code>Infinity</code>, <code>-Infinity</code>, <code>NaN</code>이 아닌 수)인지 알 수 있습니다.</p>
+### 숫자를 반환하는 경우
-<p><code>parseFloat()</code>은 <code>toString</code>이나 <code>valueOf</code> 메서드를 구현한 객체도 분석할 수 있습니다. 이 때의 결과는 객체의 <code>toString()</code>, <code>valueOf()</code>의 반환 값을 <code>parseFloat()</code>에 전달한 것과 동일합니다.</p>
+아래 예제는 모두 `3.14`를 반환합니다.
-<h2 id="예제">예제</h2>
-
-<h3 id="숫자를_반환하는_경우">숫자를 반환하는 경우</h3>
-
-<p>아래 예제는 모두 <code>3.14</code>를 반환합니다.</p>
-
-<pre class="brush: js">parseFloat(3.14);
+```js
+parseFloat(3.14);
parseFloat('3.14');
+parseFloat(' 3.14 ');
parseFloat('314e-2');
parseFloat('0.0314E+2');
parseFloat('3.14와 숫자가 아닌 문자들');
+parseFloat({ toString: function() { return "3.14" } });
+```
+
+### `NaN`을 반환하는 경우
+
+다음 예제는 {{jsxref("NaN")}}을 반환합니다.
+
+```js
+parseFloat('FF2');
+```
+
+### `parseFloat`과 `BigInt`
+
+다음 예제는 부동소수점 실수로 표현하기엔 너무 큰 수를 받거나 `n`을 무시해서 정확도를 잃어버린 `900719925474099300`을 반환합니다.
+
+```js
+parseFloat(900719925474099267n);
+parseFloat('900719925474099267n');
+```
+
+## 명세
+
+{{Specifications}}
+
+## 브라우저 호환성
+
+{{Compat}}
+
+## 같이 보기
-var foo = Object.create(null);
-foo.toString = function () { return "3.14"; };
-parseFloat(foo);
-
-var foo = Object.create(null);
-foo.valueOf = function () { return "3.14"; };
-parseFloat(foo);​​​​​
-</pre>
-
-<h3 id="NaN을_반환하는_경우"><code>NaN</code>을 반환하는 경우</h3>
-
-<p>다음 예제는 {{jsxref("NaN")}}을 반환합니다.</p>
-
-<pre class="brush: js">parseFloat('FF2');
-</pre>
-
-<h2 id="명세">명세</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Status</th>
- <th scope="col">Comment</th>
- </tr>
- <tr>
- <td>{{SpecName('ES1')}}</td>
- <td>{{Spec2('ES1')}}</td>
- <td>Initial definition.</td>
- </tr>
- <tr>
- <td>{{SpecName('ES5.1', '#sec-15.1.2.3', 'parseFloat')}}</td>
- <td>{{Spec2('ES5.1')}}</td>
- <td> </td>
- </tr>
- <tr>
- <td>{{SpecName('ES6', '#sec-parsefloat-string', 'parseFloat')}}</td>
- <td>{{Spec2('ES6')}}</td>
- <td> </td>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-parsefloat-string', 'parseFloat')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="브라우저_호환성">브라우저 호환성</h2>
-
-
-
-<p>{{Compat("javascript.builtins.parseFloat")}}</p>
-
-<h2 id="같이_보기">같이 보기</h2>
-
-<ul>
- <li>{{jsxref("Global_Objects/parseInt", "parseInt()")}}</li>
- <li>{{jsxref("Number.parseFloat()")}}</li>
- <li>{{jsxref("Number.parseInt()")}}</li>
- <li>{{jsxref("Number.toFixed()")}}</li>
- <li>{{jsxref("Global_Objects/isNaN", "isNaN()")}}</li>
-</ul>
+- {{jsxref("parseInt", "parseInt()")}}
+- {{jsxref("Number.parseFloat()")}}
+- {{jsxref("Number.parseInt()")}}
+- {{jsxref("Number.toFixed()")}}
+- {{jsxref("isNaN", "isNaN()")}}
diff --git a/files/ko/web/javascript/reference/global_objects/parseint/index.md b/files/ko/web/javascript/reference/global_objects/parseint/index.md
index d52a6fcb41..2cd686701b 100644
--- a/files/ko/web/javascript/reference/global_objects/parseint/index.md
+++ b/files/ko/web/javascript/reference/global_objects/parseint/index.md
@@ -3,219 +3,221 @@ title: parseInt()
slug: Web/JavaScript/Reference/Global_Objects/parseInt
tags:
- JavaScript
+ - Method
- Reference
+ - parseInt
browser-compat: javascript.builtins.parseInt
translation_of: Web/JavaScript/Reference/Global_Objects/parseInt
---
-<div>{{jsSidebar("Objects")}}</div>
+{{jsSidebar("Objects")}}
-<p><code><strong>parseInt()</strong></code> 함수는 문자열 인자를 구문분석하여 특정 진수(수의 진법 체계에 기준이 되는 값)의 정수를 반환합니다.</p>
+**`parseInt()`** 함수는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환합니다.
-<div>{{EmbedInteractiveExample("pages/js/globalprops-parseint.html")}}</div>
+{{EmbedInteractiveExample("pages/js/globalprops-parseint.html")}}
+## 구문
+```js
+parseInt(string)
+parseInt(string, radix)
+```
-<h2 id="구문">구문</h2>
+### 매개변수
-<pre class="syntaxbox notranslate">parseInt(<em>string</em>, <em>radix</em>);</pre>
+- `string`
+ - : 파싱할 값입니다. 문자열이 아닐 경우 [`ToString`](https://tc39.es/ecma262/#sec-tostring) 추상 연산을 사용해 문자열로 변환합니다. 문자열의 선행 공백은 무시합니다.
+- `radix` {{optional_inline}}
+ - : `string`의 진수를 나타내는 `2`부터 `36`까지의 정수입니다. 주의하세요. 기본 값이 `10`이 **아닙니다!** `Number` 자료형이 아닌 경우 `Number`로 변환합니다.
-<h3 id="매개변수">매개변수</h3>
+ > **경고:** `radix`를 생략할 경우 발생하는 일에 대해서는 [아래 설명](#설명)에서 자세히 알아볼 수 있습니다.
-<dl>
- <dt><code>string</code></dt>
- <dd>분석할 값. 만약 <code>string</code>이 문자열이 아니면 문자열로 변환(<code><a href="http://www.ecma-international.org/ecma-262/6.0/#sec-tostring">ToString</a></code> 추상 연산을 사용)합니다. 문자열의 선행 공백은 무시합니다.</dd>
-</dl>
+### 반환 값
-<dl>
- <dt><code>radix</code>{{optional_inline}}</dt>
- <dd><code>string</code>이 표현하는 정수를 나타내는 2와 36 사이의 진수(수의 진법 체계에 기준이 되는 값). 주의하세요-기본값이 10이 아닙니다!</dd>
- <dt></dt>
- <dt>
- <div class="blockIndicator warning">
- <p><a href="#설명">아래의 설명</a>은 radix가 제공되지 않았을때 무엇이 발생하는지 상세하게 설명하고 있습니다.</p>
- </div>
- </dt>
-</dl>
+주어진 `string`에서 파싱한 정수입니다.
-<h3 id="반환_값">반환 값</h3>
+다음과 같은 경우에는 {{jsxref("NaN")}}을 반환합니다.
-<p>주어진 <code>string</code>로부터 분석한 정수.</p>
+- `radix`가 2보다 작거나 36보다 큰 경우.
+- 공백이 아닌 첫 문자를 숫자로 변환할 수 없는 경우.
-<p>또는 아래의 경우에는 {{jsxref("NaN")}}을 반환합니다</p>
+## 설명
-<ul>
- <li><code>radix</code>가 2보다 작거나 36보다 큰 경우</li>
- <li>첫번째 non-whitespace 문자가 숫자로 변환되지 않는 경우</li>
-</ul>
+`parseInt` 함수는 첫 번째 인자를 문자열로 변환하고, 그 값을 파싱하여 정수나 `NaN`을 반환합니다.
-<h2 id="설명_2">설명</h2>
+`NaN`을 반환할 것이 아니면, `parseInt`는 첫 번째 인자를 지정한 `radix` 진수로 표현한 정수를 반환합니다. 예를 들어 `radix`가 `10`인 경우 10진수, `8`인 경우는 8진수, `16`인 경우 16진수 등등으로 변환합니다.
-<p><code>parseInt</code> 함수는 첫 번째 인자를 문자열로 변환하고 파싱하고,  그 문자열을 파싱하여 정수나 <code>NaN</code>을 리턴합니다.</p>
+`radix`가 `10`을 초과하는 경우, 영문 알파벳이 `9`보다 큰 숫자를 나타냅니다. 즉, 16진수에서는 `A`부터 `F`까지를 사용합니다.
-<p>만약 <code>NaN</code>이 아니면, 첫번째 인자를 특정 <code><var>radix</var></code>(진수) 값으로 표현한 정수가 반환됩니다. (예를 들면, <code><var>radix</var></code>가 <code>10</code>인 경우 십진수로 변환하며, <code>8</code>인 경우는 8진수로, <code>16</code>인 경우 16진수 등등으로  변환합니다.)</p>
+만약 `parseInt` 함수가 지정한 `radix`에서의 숫자가 아닌 문자를 마주치는 경우 해당 문자 이전까지의 문자만 사용해 파싱하며 문제의 문자와 그 이후는 모두 무시합니다. `parseInt`는 정수 값을 반환하기 위해 소수점 이하 값을 잘라냅니다. 선행 및 후행 공백은 허용됩니다.
-<p><code>radix </code>가 <code>10</code> 이상인 경우, <code>9</code>보다 큰 숫자들은 알파벳 문자로 나타내집니다. 예를 들면, 16 진수의 경우, A부터 F가 사용됩니다.</p>
+일부 숫자는 `6.022e23`(6.022 × 10^23)처럼 문자열 표현에 `e` 문자를 사용하기 때문에, `parseInt`를 매우 크거나매우 작은 숫자의 소수점 이하 값을 자르기 위해 사용하면 예기치 못한 결과가 발생할 수 있습니다. `parseInt`를 {{jsxref("Math.floor()")}}의 대체품으로 사용해서는 안됩니다.
-<p>만약 <code>parseInt</code> 함수가 특정 진수를 나타내는 숫자가 아닌 글자를 마주치게 되면, 이 글자와 계속되는 글자들은 전부 무시되며, 파싱된 정수값을 리턴합니다. <code>parseInt</code> 함수는 정수값으로 숫자를 잘라버립니다. 맨 앞의 공백과 그 뒤의 공백들은 허용됩니다.</p>
+`parseInt`는 양의 부호 `+`와 음의 부호 `-`를 인식합니다. 부호 인식은 선후행 공백을 제거한 후 첫 번째 단계로서 수행되며, 부호를 찾을 수 없으면 알고리즘은 다음 단계로 넘어갑니다. 부호를 찾은 경우 부호를 제거하고, 나머지 문자열에 대해 숫자 파싱을 진행합니다.
-<p>일부 숫자들은 문자열 표현에 e 문자를 사용하기 때문에(예: 6.022 × 10^23의 경우 <code>6.022e23</code> ) 숫자를 자르기 위하여 <code>parseInt</code>를 사용하는 것은 매우 크거나 매우 작은 숫자에 사용하는 경우 예기치 않은 결과가 발생합니다. <code>parseInt</code>는 {{jsxref("Math.floor()")}}의 대체품으로 사용해서는 안 됩니다.</p>
+진수 인자로 지정한 값은 (필요한 경우) 숫자로 변환됩니다. 변환 후의 값이 0, `NaN`, `Infinity` 중 하나(`undefined`는 `NaN`으로 변환)라면 JavaScript는 다음을 가정합니다.
-<p><code>parseInt</code>는 양수를 의미하는 <code>+ </code>기호와 음수를 나타내는 <code>-</code> 기호를 정확히 이해합니다(ECMAScript 1 이후). 공백이 제거된 후 구문 분석의 초기 단계로 수행됩니다. 기호를 찾을 수 없으면 알고리즘이 다음 단계로 이동하고, 그렇지 않으면 기호를 제거하고 문자열의 나머지 부분에서 숫자 파싱을 실행합니다.</p>
+1. 입력 값이 "`0x`" 또는 "`0X`"(0과 대/소문자 X)로 시작하는 경우 `radix`를 `16`으로 간주하여 나머지 문자열을 16진수로 파싱합니다.
+2. 입력 값이 그 외의 다른 값으로 시작하면 `radix`는 `10`(10진수)입니다.
-<p>만약 <var>radix</var> 가 <code>undefined</code> 이거나 0이라면, (또는 없다면), JavaScript 는 아래와 같이 임의 처리합니다. :</p>
+이외에 진수 값이 \[2, 36]의 범위를 벗어나는 경우 `parseInt`가 `NaN`을 반환합니다.
-<ol>
- <li>인풋 값 <code>string</code> 이 "0x" 나 "0X"로 시작한다면, <var>radix</var> 는 16(16진)이며, 나머지 문자열은 파싱됩니다.</li>
- <li>인풋 값 <code>string</code> 이 "0"으로 시작한다면, <var>radix</var> 는 8(8진)이거나, 10(십진)입니다. 정확히 이 선택된 radix 는 구현 의존적적입니다. ECMAScript 5 는 10(십진)이 사용되는 것을 명시하지만, 모든 브라우저가 아직 이렇게 되지 않습니다. 이러한 이유로 <strong>항상 <code>parseInt</code>를 사용할 때는 radix 값을 명시해야 합니다.</strong></li>
- <li>인풋 값 <code>string</code> 이 다른 값으로 시작 된다면, radix 는 10(십진)입니다.</li>
-</ol>
+`NaN` 값은 모든 진수에서 숫자가 아닙니다. `parseInt`의 결과가 `NaN`인지 확인하려면 {{jsxref("isNaN")}}을 사용하세요. `NaN`을 산술 연산에 사용하면 연산 결과 역시 `NaN`이 됩니다.
-<p>첫 번째 글자가 숫자로 변환될 수 없다면, <code>parseInt</code> 는 <code>NaN</code>을 리턴할 것입니다.</p>
+숫자를 특정 진수의 문자열 리터럴로 변환하려면 `number.toString(radix)`를 사용하세요.
-<p>연산의 경우, <code>NaN</code> 값은 어떠한 radix 숫자도 아닙니다. <code>parseInt</code> 값이 <code>NaN</code>인지 알아내기 위해 {{jsxref("isNaN")}} 함수를 호출할 수 있습니다. 만약 <code>NaN</code>이 산술 연산으로 넘겨진다면, 이 연산의 결과 또한 NaN이 될 것입니다.</p>
+> **경고:** `parseInt`는 {{jsxref("BigInt")}} 구문을 {{jsxref("Number")}}로 반환하므로 정확도를 잃습니다. 마지막 `n` 문자를 무시하기 때문입니다.
-<p>특정 진수의 스트링 리터럴로 숫자를 변환하는 것은 <code>intValue.toString(radix)</code>를 사용합니다.</p>
+### 진수 없는 8진수 해석
-<div class="blockIndicator warning">
-<p>{{jsxref("BigInt")}} 주의: <code>parseInt</code>는 {{jsxref("BigInt")}}를 {{jsxref("Number")}}으로 변환하여 정확성을 떨어뜨립니다. 이는 "n"을 포함한 숫자가 아닌 값은 삭제되기 때문입니다.</p>
-</div>
+2021년을 기준으로, 다음 내용은 최근 구현체에 해당하지 않습니다. 주의하세요.
-<h2 id="radix가_없는_8진_해석">radix가 없는 8진 해석</h2>
+ECMAScript 3부터 이미 권장되지 않았음에도 불구하고, 많은 ECMAScript 3 구현체는 `0`으로 시작하는 숫자형 문자열을 8진수로 해석했습니다. 다음 코드는 8진수 결과를 낼 수도 있고, 10진수 결과를 낼 수도 있었습니다.
-<p>비록 ECMAScript 3 에서 권장되지 않고, ECMAScript 5 에서 금지되었지만, 많은 구현들은 <code>0</code>으로 시작하는 8진수 문자열을 해석합니다. 다음의 코드는 8진 결과를 가질 수도 있으며, 10진의 결과를 가질 수도 있습니다. <strong>항상 이러한 명확하지 않은 표현은 피하고 <code>radix</code>를 명시하도록 합니다.</strong></p>
+```js
+parseInt('0e0') // 0
+parseInt('08') // 0, '8'은 8진수 숫자가 아니기 때문
+```
-<pre class="brush: js notranslate">parseInt("0e0"); // 0
-parseInt("08"); // 0, '8' 은 8진수가 아니다.
-</pre>
+ECMAScript 5 명세는 `parseInt` 구현이 `0`으로 시작하는 문자열을 8진수로 해석하는 것을 금지했습니다. 2021년 시점에선 많은 구현체가 이 동작을 적용했습니다.
-<h3 id="ECMAScript_5는_8진수_해석을_삭제하였습니다.">ECMAScript 5는 8진수 해석을 삭제하였습니다.</h3>
+```js
+parseInt('0e0') // 0
+parseInt('08') // 8
+```
-<p>ECMAScript 5의 <code>parseInt</code> 함수 스펙은 더 이상 <code>0</code> 으로 시작하는 8진수 값의 문자열을 다루는 구현을 허용하지 않습니다. ECMAScript 5는 다음을 발표했습니다. :</p>
+## 더 엄격한 파싱 함수
-<p><code>parseInt</code> 함수는 특정 radix(진수)값에 따라 문자열 아규먼트 내용의 해석을 하고, 그 영향을 받은 정수 값을 생성합니다. 문자열 내에서 시작되는 부분에 위치한 공백은 무시됩니다. 만약 radix 값이 정의되지 않거나, <code>0</code>이라면, 이것은 10진수로 여겨집니다. <code>0x</code> 이나 <code>0X</code> 으로 시작되는 숫자 일 때는 16진수로 여겨집니다.</p>
+간혹 정수를 파싱할 수 있는 더 엄격항 방법이 필요할 때가 있습니다. 정규표현식이 도움이 될 수 있습니다.
-<p>ECMAScript 3 와의 차이는 8진수의 해석을 허용하고 있느냐의 차이입니다.</p>
-
-<p>많은 구현들이 2013부터 이 방식을 채택하고 있지 않아 왔습니다. 오래된 브라우저는 지원되어야 하기 때문에 <strong>항상 radix 값을 명시 해야합니다. </strong></p>
-
-<h2 id="더_엄격한_파싱_함수">더 엄격한 파싱 함수</h2>
-
-<p>가끔은 int 값을 파싱할 때 더 엄격한 방식을 이용하는 것이유용합니다. 정규 표현식이 도움이 될 것입니다. :</p>
-
-<pre class="brush: js notranslate">filterInt = function (value) {
- if(/^(\-|\+)?([0-9]+|Infinity)$/.test(value))
- return Number(value);
- return NaN;
+```js
+function filterInt(value) {
+ if (/^[-+]?(\d+|Infinity)$/.test(value)) {
+ return Number(value)
+ } else {
+ 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
-</pre>
-
-<h2 id="예제">예제</h2>
-
-<h3 id="parseInt_사용하기"><code>parseInt()</code> 사용하기</h3>
-
-<p>다음의 예제는 모두 <code>15</code>를 리턴합니다.</p>
-
-<pre class="brush: js notranslate">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);
-</pre>
-
-<p>다음의 예제는 모두 <code>NaN</code>을 리턴합니다.</p>
-
-<pre class="brush: js notranslate">parseInt("Hello", 8); // 전부 숫자가 아님.
-parseInt("546", 2); // 숫자는 2진법 표현이 불가능함.
-</pre>
-
-<p>다음의 예제는 모두 <code>-15</code>을 리턴합니다. :</p>
-
-<pre class="brush: js notranslate">parseInt("-F", 16);
-parseInt("-0F", 16);
-parseInt("-0XF", 16);
+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
+```
+
+## 예제
+
+### parseInt 사용하기
+
+다음은 모두 `15`를 반환합니다.
+
+```js
+parseInt('0xF', 16)
+parseInt('F', 16)
+parseInt('17', 8)
+parseInt(021, 8)
+parseInt('015', 10) // parseInt('015', 8)이었다면 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`을 반환합니다.
+
+```js
+parseInt('Hello', 8); // 숫자가 전혀 아님
+parseInt('546', 2); // 0과 1을 제외한 숫자는 2진법에서 유효하지 않음
+```
+
+다음은 모두 `-15`를 반환합니다.
+
+```js
+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);
-</pre>
+parseInt('-17', 8)
+parseInt('-15', 10)
+parseInt('-1111', 2)
+parseInt('-15e1', 10)
+parseInt('-12', 13)
+```
-<p>다음의 예제는 모두 <code>4</code>를 리턴합니다.</p>
+다음은 모두 `4`를 반환합니다.
-<pre class="notranslate">parseInt(4.7, 10)
+```js
+parseInt(4.7, 10)
parseInt(4.7 * 1e22, 10) // 매우 큰 숫자가 4가 됨
parseInt(0.00000000000434, 10) // 매우 작은 숫자가 4가 됨
-</pre>
+```
-<p>만약 숫자가 <code>1e+21</code>과 같거나 큰 경우, 또는 <code>1e-7</code>과 같거나 작은 경우, <code>1</code>을 리턴합니다.(radix가 <code>10</code>인 경우)</p>
+숫자가 1e+21을 초과하거나 1e-7 미만인 경우 10진수에서 `1`을 반환합니다.
-<pre class="notranslate">parseInt(0.0000001,10);
+```js
+parseInt(0.0000001,10);
parseInt(0.000000123,10);
parseInt(1e-7,10);
parseInt(1000000000000000000000,10);
parseInt(123000000000000000000000,10);
parseInt(1e+21,10);
-</pre>
+```
+
+다음은 `224`를 반환합니다.
+
+```js
+parseInt('0e0', 16)
+```
+
+{{jsxref("BigInt")}} 값은 정확도를 잃습니다.
+
+```js
+parseInt('900719925474099267n')
+// 900719925474099300
+```
-<p>다음의 예제는 모두 <strong><code>224</code></strong>를 리턴합니다.</p>
+`parseInt`는 [숫자 구분 기호](/ko/docs/Web/JavaScript/Reference/Lexical_grammar#numeric_separators)와 함께 사용할 수 없습니다.
-<pre class="brush: js notranslate">parseInt("0e0", 16);
-</pre>
+```js
+parseInt('123_456')
+// 123
+```
-<p>{{jsxref("BigInt")}} 는 정확성을 잃습니다.</p>
+진수는 `Number`로 변환합니다.
-<pre class="notranslate">parseInt('900719925474099267n')
-// 900719925474099300</pre>
+```js
+const obj = {
+ valueOf() {return 8}
+};
+parseInt('11', obj); // 9
-<p><code>parseInt</code> 는 숫자구분자와 같이 작동하지 않습니다.</p>
+obj.valueOf = function() {return 1};
+parseInt('11', obj); // NaN
-<pre class="notranslate">parseInt('123_456')
-// 123</pre>
+obj.valueOf = function() {return Infinity};
+parseInt('11', obj); // 11
+```
-<h2 id="명세">명세</h2>
+## 명세
-<table>
- <thead>
- <tr>
- <th scope="col">Specification</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-parseint-string-radix', 'parseInt')}}</td>
- </tr>
- </tbody>
-</table>
+{{Specifications}}
-<h2 id="브라우저_호환성">브라우저 호환성</h2>
+## 브라우저 호환성
-<div>{{Compat}}</div>
+{{Compat}}
-<h2 id="같이_보기">같이 보기</h2>
+## 같이 보기
-<ul>
- <li>{{jsxref("Global_Objects/parseFloat", "parseFloat()")}}</li>
- <li>{{jsxref("Number.parseFloat()")}}</li>
- <li>{{jsxref("Number.parseInt()")}}</li>
- <li>{{jsxref("Global_Objects/isNaN", "isNaN()")}}</li>
- <li>{{jsxref("Number.toString()")}}</li>
- <li>{{jsxref("Object.valueOf")}}</li>
-</ul>
+- {{jsxref("Global_Objects/parseFloat", "parseFloat()")}}
+- {{jsxref("Number.parseFloat()")}}
+- {{jsxref("Number.parseInt()")}}
+- {{jsxref("Global_Objects/isNaN", "isNaN()")}}
+- {{jsxref("Number.toString()")}}
+- {{jsxref("Object.valueOf")}}