recursal/MDN huggingface dataset:
TypeError() constructor
=======================

**`TypeError`** 생성자는 객체는 일반적으로 값이 기대하던 자료형이 아니라서 연산을 할 수 없을 때 발생하는 오류를 생성합니다.

구문
--


```js
new TypeError()
new TypeError(message)
new TypeError(message, options)
new TypeError(message, fileName)
new TypeError(message, fileName, lineNumber)

TypeError()
TypeError(message)
TypeError(message, options)
TypeError(message, fileName)
TypeError(message, fileName, lineNumber)
```


**참고:** `TypeError()` `new`를 사용하거나 혹은 사용하지 않고 호출이 사용합니다. 두 방법 모두 새로운 `TypeError`를 생성합니다.

### 매개변수

`message` Optional

사람이 읽을 수 있는 오류에 대한 설명

`options` Optional

다음의 속성을 가지는 객체.

`cause` Optional

 오류의 특정 원인을 가리키는 속성.
 오류를 잡아서 좀 더 상세하거나 유용한 오류 메시지와 함께 예외를 다시 발생시킬 때 이 속성을 원래 오류를 전달하는데 사용할 수 있습니다.



`fileName` Optional 
비표준

예외가 발생한 코드를 담고 있는 파일 이름

`lineNumber` Optional 
비표준

예외가 발상한 코드의 줄 수

예제
--

### TypeError 처리하기


```js
try {
  null.f();
} catch (e) {
  console.log(e instanceof TypeError); // true
  console.log(e.message); // "null has no properties"
  console.log(e.name); // "TypeError"
  console.log(e.fileName); // "Scratchpad/1"
  console.log(e.lineNumber); // 2
  console.log(e.columnNumber); // 2
  console.log(e.stack); // "@Scratchpad/2:2:3\n"
}
```

### TypeError 생성하기


```js
try {
  throw new TypeError("Hello", "someFile.js", 10);
} catch (e) {
  console.log(e instanceof TypeError); // true
  console.log(e.message); // "Hello"
  console.log(e.name); // "TypeError"
  console.log(e.fileName); // "someFile.js"
  console.log(e.lineNumber); // 10
  console.log(e.columnNumber); // 0
  console.log(e.stack); // "@Scratchpad/2:2:9\n"
}
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-nativeerror-constructors |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `Error`
Promise.prototype.finally()
===========================

**`finally()`** 메소드는 `Promise` 객체를 반환합니다. Promise가 처리되면 충족되거나 거부되는지 여부에 관계없이 지정된 콜백 함수가 실행됩니다. 이것은 Promise가 성공적으로 수행 되었는지 거절되었는지에 관계없이 `Promise`가 처리 된 후에 코드가 무조건 한 번은 실행되는 것을 제공합니다.

이것은 Promise의 `then()`과 `catch()` (en-US) 핸들러에서의 코드 중복을 피하게 합니다.

문법
--


```js
p.finally(onFinally);

p.finally(function () {
  // settled (fulfilled or rejected)
});
```

### Parameters

`onFinally`

`Promise`가 처리된 후 `Function` 이 호출됩니다.

### Return value

`finally` 핸들러는 `onFinally` 라는 지정된 함수의 `Promise`가 반환됩니다.

설명
--

`finally()` 메서드는 결과에 관계없이 promise가 처리되면 무언가를 프로세싱 또는 정리를 수행하려는 경우에 유용합니다.

`finally()` 메서드는 `.then(onFinally, onFinally)` 를 호출하는 것과 매우 비슷하지만 몇 가지 차이점이 있습니다:

* 함수를 인라인으로 만들 때, 두 번 선언해야 하지 않고 한 번만 전달하거나 그것을 위한 변수를 만들 수 있습니다.
* `finally` 콜백은 어떠한 인수도 전달받지 않습니다, 왜냐하면 promise가 이행되었는지 또는 거부되었는지를 판단할 수 없기 때문입니다. promise의 왜 거부되었는지 또는 이행되었을때 반환되는 값이 필요하지 않거나 제공할 필요가 없을 때 활용합니다.
* Promise.reject (3) .finally (() => {}) Promise.reject (3) .finally (() => {}) (약속 안 함) )는 3으로 거부됩니다.
* `Promise.resolve(2).then(() => {}, () => {})`(`undefined`로 해결될) 와 달리, `Promise.resolve(2).finally(() => {})` 는 값 `2`로 해결됩니다.
* 유사하게 `Promise.reject(3).then(() => {}, () => {})` (`undefined`로 거부될)와는 달리 `Promise.reject(3).finally(() => {})` 는 값 `3`로 거부됩니다.

**참고:** `finally` 콜백에서 `throw` (또는 거부된 promise를 반환)하면 `throw()`를 호출 할 때 지정된 거부 이유로 새롭게 만들어진 promise를 반환합니다.

예제
--


```js
let isLoading = true;

fetch(myRequest)
  .then(function (response) {
    var contentType = response.headers.get("content-type");
    if (contentType && contentType.includes("application/json")) {
      return response.json();
    }
    throw new TypeError("Oops, we haven't got JSON!");
  })
  .then(function (json) {
    /\* process your JSON further \*/
  })
  .catch(function (error) {
    console.log(error);
  })
  .finally(function () {
    isLoading = false;
  });
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise.prototype.finally |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

더보기
---

* `Promise`
* `Promise.prototype.then()`
* `Promise.prototype.catch()` (en-US)
Promise.allSettled()
====================

**`Promise.allSettled()`** 메서드는 주어진 모든 프로미스를 이행하거나 거부한 후, 각 프로미스에 대한 결과를 나타내는 객체 배열을 반환합니다.

일반적으로 서로의 성공 여부에 관련 없는 여러 비동기 작업을 수행해야 하거나, 항상 각 프로미스의 실행 결과를 알고 싶을 때 사용합니다.

그에 비해, `Promise.all()`이 반환한 프로미스는 서로 연관된 작업을 수행하거나, 하나라도 거부 당했을 때 즉시 거부하고 싶을 때 적합합니다.

시도해보기
-----

문법
--


```js
Promise.allSettled(iterable);
```

### 인자

`iterable`

멤버가 모두 `Promise`인, 배열(`Array`)과 같은 이터러블 객체입니다.

### 반환 값

지정된 Promise 컬렉션의 모든 Promise가 성공적으로 이행되거나 거부되어 완료되면, **보류 중**인 Promise는 **비동기적**으로 이행됩니다. 그 때, 반환된 Promise의 핸들러는 원래 프로미스 집합에 있는 각 프로미스의 결과를 포함하는 배열을 입력으로 전달합니다.

단, `Promise.allSettled()`는 빈 이터러블 객체를 인자로 전달받았을 **경우에만** 빈 배열로써 **이미 이행된** 객체를 반환합니다.

반환된 각 객체별로 `status`를 확인할 수 있습니다. 만약 `fulfilled` 상태라면 `value`를, `rejected` 상태라면면 `reason` 속성을 확인할 수 있습니다. value나 reason을 통해 각 Promise가 어떻게 이행(또는 거부)됐는지 알 수 있습니다.

예제
--

### Promise.allSettled의 사용

#### `Promise.prototype.then()`


```js
Promise.allSettled([
  Promise.resolve(33),
  new Promise((resolve) => setTimeout(() => resolve(66), 0)),
  99,
  Promise.reject(new Error("an error")),
]).then((values) => console.log(values));

// [
// {status: "fulfilled", value: 33},
// {status: "fulfilled", value: 66},
// {status: "fulfilled", value: 99},
// {status: "rejected", reason: Error: an error}
// ]
```


#### `await`


```js
const values = await Promise.allSettled([
  Promise.resolve(33),
  new Promise((resolve) => setTimeout(() => resolve(66), 0)),
  99,
  Promise.reject(new Error("an error")),
]);
console.log(values);

// [
// {status: "fulfilled", value: 33},
// {status: "fulfilled", value: 66},
// {status: "fulfilled", value: 99},
// {status: "rejected", reason: Error: an error}
// ]
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise.allsettled |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* core-js에서 사용가능한 `Promise.allSettled`의 폴리필
* Promises
* Using promises
* Graceful asynchronous programming with promises
* `Promise`
* `Promise.all()`
Promise.resolve()
=================

**`Promise.resolve(value)`** 메서드는 주어진 값으로 이행하는 `Promise.then` 객체를 반환합니다. 그 값이 프로미스인 경우, 해당 프로미스가 반환됩니다. 그 값이 thenable(예, `"then" 메소드` 가 있음)인 경우, 반환된 프로미스는 그 thenable을 "따르며", 그 최종 상태를 취합니다. 그렇지 않으면 반환된 프로미스는 그 값으로 이행합니다. 이 함수는 프로미스형의 객체(무언가를 결정하는 프로미스를 결정하는 프로미스 등)의 중첩된 레이어를 단일 레이어로 펼칩니다.

**경고:** **주의**: 스스로를 결정하는 thenable 에서 `Promise.resolve` 를 호출하면 안됩니다. 이는 무한히 중첩된 프로미스를 펼치려고하므로 무한 재귀를 유발할 것입니다. Angular 에서 `async` Pipe 를 함께 사용한 예제입니다. 자세한 내용은 여기에서 확인하세요.

시도해보기
-----

구문
--


```js
Promise.resolve(value);
```

### 파라미터

value

이 `Promise`에 의해 결정되는 인수. `Promise` 또는 이행할 thenable 일수도 있습니다.

### 반환 값

주어진 값으로 이행된 `Promise` 또는 값이 promise 객체인 경우, 값으로 전달된 promise.

설명
--

정적 `Promise.resolve` 함수는 이행된 `Promise` 를 반환합니다.

예시
--

### 정적 `Promise.resolve` 메소드 사용


```js
Promise.resolve("Success").then(
  function (value) {
    console.log(value); // "Success"
  },
  function (value) {
    // 호출되지 않음
  },
);
```

### 배열 이행


```js
var p = Promise.resolve([1, 2, 3]);
p.then(function (v) {
  console.log(v[0]); // 1
});
```

### 또 다른 `Promise` 이행


```js
var original = Promise.resolve(33);
var cast = Promise.resolve(original);
cast.then(function (value) {
  console.log("value: " + value);
});
console.log("original === cast ? " + (original === cast));

// 로그 순서:
// original === cast ? true
// value: 33
```


로그의 순서가 반대인 이유는 `then` 핸들러가 비동기로 호출되기 때문입니다. 여기에서 `then` 이 동작하는 방식에 대해 확인하세요.

### thenable 이행 및 오류 발생


```js
// thenable 객체 이행
var p1 = Promise.resolve({
  then: function (onFulfill, onReject) {
    onFulfill("fulfilled!");
  },
});
console.log(p1 instanceof Promise); // true, 객체는 Promise 로 변환됨

p1.then(
  function (v) {
    console.log(v); // "fulfilled!"
  },
  function (e) {
    // 호출되지 않음
  },
);

// thenable 이 콜백 이전에 오류를 throw
// Promise 거부
var thenable = {
  then: function (resolve) {
    throw new TypeError("Throwing");
    resolve("Resolving");
  },
};

var p2 = Promise.resolve(thenable);
p2.then(
  function (v) {
    // 호출되지 않음
  },
  function (e) {
    console.log(e); // TypeError: Throwing
  },
);

// thenable 이 콜백 이후에 오류를 throw
// Promise 이행
var thenable = {
  then: function (resolve) {
    resolve("Resolving");
    throw new TypeError("Throwing");
  },
};

var p3 = Promise.resolve(thenable);
p3.then(
  function (v) {
    console.log(v); // "Resolving"
  },
  function (e) {
    // 호출되지 않음
  },
);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise.resolve |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

함께 보기
-----

* `Promise`
Promise.reject()
================

**`Promise.reject(reason)`** 메서드는 주어진 이유(reason)로 거부된 `Promise` 객체를 반환합니다.

구문
--


```js
Promise.reject(reason);
```

### 매개변수

reason

이 `Promise`를 거부한 이유.

설명
--

정적 `Promise.reject` 함수는 거부된 `Promise`를 반환합니다. 디버깅 목적 및 까다로운 오류를 잡기 위해, `reason`을 `Error`생성자의 인스턴스로 만들면 유용합니다.

예
-

### 정적 Promise.reject() 메서드 사용


```js
Promise.reject("Testing static reject").then(
  function (reason) {
    // 호출되지 않음
  },
  function (reason) {
    console.log(reason); // "Testing static reject"
  },
);

Promise.reject(new Error("fail")).then(
  function (error) {
    // 호출되지 않음
  },
  function (error) {
    console.log(error); // Stacktrace
  },
);
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise.reject |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* `Promise`
* BlueBird Promise 라이브러리를 사용해 선택된 오류 잡기
Promise() 생성자
=============

**`Promise`** 생성자는 주로 프로미스를 지원하지 않는 함수를 감쌀 때 사용합니다.

시도해보기
-----

구문
--


```js
new Promise(executor);
```

### 매개변수

`executor`

`resolve` 및 `reject` 인수를 전달할 실행 함수. 실행 함수는 프로미스 구현에 의해 `resolve`와 `reject` 함수를 받아 즉시 실행됩니다(실행 함수는 `Promise` 생성자가 생성한 객체를 반환하기도 전에 호출됩니다). `resolve` 및 `reject` 함수는 호출할 때 각각 프로미스를 이행하거나 거부합니다. 실행 함수는 보통 어떤 비동기 작업을 시작한 후 모든 작업을 끝내면 `resolve`를 호출해 프로미스를 이행하고, 오류가 발생한 경우 `reject`를 호출해 거부합니다. 실행 함수에서 오류를 던지면 프로미스는 거부됩니다. 실행 함수의 반환값은 무시됩니다.

예제
--

`Promise` 객체는 `new` 키워드와 생성자를 사용해 만듭니다. 생성자는 매개변수로 "실행 함수"를 받습니다. 이 함수는 매개 변수로 두 가지 함수를 받아야 하는데, 첫 번째 함수(`resolve`)는 비동기 작업을 성공적으로 완료해 결과를 값으로 반환할 때 호출해야 하고, 두 번째 함수(`reject`)는 작업이 실패하여 오류의 원인을 반환할 때 호출하면 됩니다. 두 번째 함수는 주로 오류 객체를 받습니다.


```js
const myFirstPromise = new Promise((resolve, reject) => {
  // do something asynchronous which eventually calls either:
  //
  // resolve(someValue) // fulfilled
  // or
  // reject("failure reason") // rejected
});
```


함수에 프로미스 기능을 추가하려면, 간단하게 프로미스를 반환하도록 하면 됩니다.


```js
function myAsyncFunction(url) {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    xhr.open("GET", url);
    xhr.onload = () => resolve(xhr.responseText);
    xhr.onerror = () => reject(xhr.statusText);
    xhr.send();
  });
}
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise-constructor |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* 프로미스 사용하기
DataView.prototype.getInt32()
=============================

`DataView` 인스턴스의 **`getInt32()`** 메서드는 이 `DataView`의 지정된 바이트 오프셋에서
 4바이트를 읽고 이를 32비트 부호 있는 정수로 해석합니다.

시도해보기
-----

구문
--


```js
getInt32(byteOffset)
getInt32(byteOffset, littleEndian)
```

### 매개변수

`byteOffset`

데이터를 읽을 데이터 뷰의 시작점으로부터의 오프셋(바이트).

`littleEndian` Optional

리틀 엔디언 혹은 빅 엔디언 형식으로 32비트 정수를 저장할지
 여부를 나타냅니다. `false` 혹은 `undefined`이라면 빅 엔디안 값을 읽습니다.


### 반환 값

부호 있는 32비트 정수.

### 에러 발생

`RangeError`

데이터 뷰의 끝을 넘어서 읽을 수 있는 `byteOffset`이 설정된 경우 발생합니다.

설명
--

정렬 제약 조건은 없으며, 임의의 오프셋에서 멀티바이트 값을 가져올 수 있습니다.

예제
--

### getInt32 메서드 사용하기


```js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.getInt32(1); // 0
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getint32 |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `DataView`
* `ArrayBuffer`
DataView.prototype.getInt16()
=============================

`DataView` 인스턴스의 **`getInt16()`** 메서드는 이 `DataView`의 지정된 바이트 오프셋에서
 2바이트를 읽고 이를 16비트 부호 있는 정수로 해석합니다.

시도해보기
-----

구문
--


```js
getInt16(byteOffset)
getInt16(byteOffset, littleEndian)
```

### 매개변수

`byteOffset`

데이터를 읽을 데이터 뷰의 시작점으로부터의 오프셋(바이트).

`littleEndian` Optional

리틀 엔디언 혹은 빅 엔디언 형식으로 16비트 정수를 저장할지
 여부를 나타냅니다. `false` 혹은 `undefined`이라면 빅 엔디안 값을 읽습니다.


### 반환 값

부호있는 16비트 정수.

### 에러 발생

`RangeError`

데이터 뷰의 끝을 넘어서 읽을 수 있는 `byteOffset`이 설정된 경우 발생합니다.

설명
--

정렬 제약 조건은 없으며, 임의의 오프셋에서 멀티바이트 값을 가져올 수 있습니다.

예제
--

### getInt16 메서드 사용하기


```js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.getInt16(1); // 0
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getint16 |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `DataView`
* `ArrayBuffer`
DataView() 생성자
==============

**`DataView()`** 생성자는 새로운 `DataView` 객체를 생성합니다.

시도해보기
-----

구문
--


```js
    new DataView(buffer [, byteOffset [, byteLength]])
```

### 매개변수

`buffer`

새로운 `DataView` 객체의 저장소로 사용할 `ArrayBuffer` 또는 `SharedArrayBuffer` 
Experimental
.

`byteOffset` Optional

새로운 뷰가 참조할 첫 번째 바이트로의 바이트 단위 오프셋. 지정하지 않을 경우 버퍼 뷰는 첫 번째 바이트부터 시작합니다.

`byteLength` Optional

바이트 배열의 요소 수. 지정하지 않을 경우 뷰의 길이는 버퍼의 길이와 같아집니다.

### 반환 값

지정한 데이터 버퍼를 나타내는 새로운 `DataView` 객체.

`DataView` 객체는 배열 버퍼의 "인터프리터"라고 생각하면 좀 더 쉽습니다. `DataView`는 읽기와 쓰기 모두에서 버퍼에 잘 맞도록 숫자를 올바르게 변환하는 법, 즉 정수/부동소수점 실수 변환, 엔디언 등 이진 형식으로 나타낸 숫자의 처리법을 알고 있습니다.

### 예외

`RangeError`

`byteOffset` 또는 `byteLength` 매개변수가 버퍼의 끝을 벗어남.예를 들어, 버퍼가 16바이트 길이인데 `byteOffset`을 8로, `byteLength`를 10으로 설정할 경우 총 길이 18로서 2바이트를 초과하므로 오류가 발생합니다.

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview-constructor |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `DataView`
DataView.prototype.getInt8()
============================

`DataView` 인스턴스의 **`getInt8()`** 메서드는 이 `DataView`의 지정된 바이트 오프셋에서
 1바이트를 읽고 이를 8비트 부호 있는 정수로 해석합니다.

시도해보기
-----

구문
--


```js
getInt8(byteOffset)
```

### 매개변수

`byteOffset`

데이터를 읽을 데이터 뷰의 시작점으로부터의 오프셋(바이트).

### 반환 값

부호 있는 8비트 정수 숫자.

### 에러 발생

`RangeError`

데이터 뷰의 끝을 넘어서 읽을 수 있는 `byteOffset`이 설정된 경우 발생합니다.

설명
--

정렬 제약 조건은 없으며, 임의의 오프셋에서 멀티바이트 값을 가져올 수 있습니다.

예제
--

### getInt8 메서드 사용하기


```js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.getInt8(1); // 0
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getint8 |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `DataView`
* `ArrayBuffer`
DataView.prototype.getUint32()
==============================

`DataView` 인스턴스의 **`getUint32()`** 메서드는 이 `DataView`의 지정된 바이트 오프셋에서
 4바이트를 읽고 이를 32비트 부호 없는 정수로 해석합니다.

시도해보기
-----

구문
--


```js
getUint32(byteOffset)
getUint32(byteOffset, littleEndian)
```

### 매개변수

`byteOffset`

데이터를 읽을 뷰의 시작 부분으로부터의 오프셋(바이트 단위)입니다.

`littleEndian` Optional

 16비트 정수가 리틀 엔디안 혹은 빅 앤디안 형삭으로 저장되는지 여부를
 나타냅니다. 만약 `false` 혹은 `undefined`라면 빅 엔디언 값을 읽습니다.


### 반환 값

32비트 부호없는 정수.

### 발생하는 에러

`RangeError`

뷰의 끝을 넘어 읽는 수도 있는 `byteOffset`이 설정된 경우 발생합니다.

설명
--

정렬 제약 조건은 없으며, 임의의 오프셋에서 멀티바이트 값을 가져올 수 있습니다.

예제
--

### getUint32 메서드 사용하기


```js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.getUint32(1); // 0
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getuint32 |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `DataView`
* `ArrayBuffer`
DataView.prototype.getUint16()
==============================

`DataView` 인스턴스의 **`getUint16()`** 메서드는 이 `DataView`의 지정된 바이트 오프셋에서
 2바이트를 읽고 이를 16비트 부호 없는 정수로 해석합니다.

시도해보기
-----

구문
--


```js
getUint16(byteOffset)
getUint16(byteOffset, littleEndian)
```

### 매개변수

`byteOffset`

데이터를 읽을 뷰의 시작 부분으로부터의 오프셋(바이트 단위)입니다.

`littleEndian` Optional

 16비트 정수가 리틀 엔디안 혹은 빅 앤디안 형삭으로 저장되는지 여부를
 나타냅니다. 만약 `false` 혹은 `undefined`라면 빅 엔디언 값을 읽습니다.


### 반환 값

16비트 부호없는 정수.

### 발생하는 에러

`RangeError`

뷰의 끝을 넘어 읽는 수도 있는 `byteOffset`이 설정된 경우 발생합니다.

설명
--

정렬 제약 조건은 없으며, 임의의 오프셋에서 멀티바이트 값을 가져올 수 있습니다.

예제
--

### getUint16 메서드 사용하기


```js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.getUint16(1); // 0
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getuint16 |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `DataView`
* `ArrayBuffer`
DataView.prototype.getUint8()
=============================

`DataView` 인스턴스의 **`getUint8()`** 메서드는 이 `DataView`의 지정된 바이트 오프셋에서
 1바이트를 읽고 이를 8비트 부호 없는 정수로 해석합니다.

시도해보기
-----

구문
--


```js
getUint8(byteOffset)
```

### 매개변수

`byteOffset`

데이터를 읽을 뷰의 시작 부분으로부터의 오프셋(바이트 단위)입니다.

### 반환 값

부호 없는 8비트 정수.

### 발생하는 에러

`RangeError`

뷰의 끝을 넘어 읽는 수도 있는 `byteOffset`이 설정된 경우 발생합니다.

설명
--

정렬 제약 조건은 없으며, 임의의 오프셋에서 멀티바이트 값을 가져올 수 있습니다.

예제
--

### getUint8 메서드 사용하기


```js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.getUint8(1); // 0
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getuint8 |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `DataView`
* `ArrayBuffer`
Number.MIN\_SAFE\_INTEGER
=========================

**`Number.MIN_SAFE_INTEGER`** 정적 데이터 속성은 JavaScript에서 안전한 최소 정수값 혹은 (-(253 - 1))을 나타냅니다.

이보다 더 작은 정수값을 표현하기 위해서는 `BigInt` 사용을 고려하시기 바랍니다.

시도해보기
-----

값
-

`-9007199254740991` (-9,007,199,254,740,991, or about -9 quadrillion).

| Property attributes of `Number.MIN_SAFE_INTEGER` |
| --- |
| Writable | 불가능 |
| Enumerable | 불가능 |
| Configurable | 불가능 |

설명
--

배정밀도 부동소수점 형식
 은 소수점을 나타내는 비트가 52비트밖에 없으므로 -(253 – 1) 와 253 – 1 사이의 정수만 안전하게 표현할 수 있습니다. 여기서 안전하다는 것은 정수를 정확하게 표현하고 정확하게 비교할 수 있는 능력을 의미합니다.

예를 들어 `Number.MIN_SAFE_INTEGER - 1 === Number.MIN_SAFE_INTEGER - 2`는 수학적으로는 맞지 않지만 참으로 평가됩니다. 자세한 내용은 `Number.isSafeInteger()`를 참조하세요.

`MIN_SAFE_INTEGER`는 `Number`의 정적 속성이기 때문에, 직접 생성한 `Number` 객체의 속성이 아니라 `Number.MIN_SAFE_INTEGER` 형식으로 사용해야 합니다.

예제
--

### MIN\_SAFE\_INTEGER 사용하기


```js
Number.MIN\_SAFE\_INTEGER; // -9007199254740991
-(2 \*\* 53 - 1); // -9007199254740991
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-number.min\_safe\_integer |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* Polyfill of `Number.MIN_SAFE_INTEGER` in `core-js`
* `Number.MAX_SAFE_INTEGER`
* `Number.isSafeInteger()`
* `BigInt`
Number.prototype.toString()
===========================

**`toString()`** 메서드는 특정한 `Number` 객체를 나타내는 문자열을 반환합니다.

시도해보기
-----

구문
--


```js
numObj.toString([radix]);
```

### 매개변수

`radix` Optional

수의 값을 나타내기 위해 사용되기 위한 기준을 정하는 2와 36사이의 정수. (진수를 나타내는 기수의 값.)

### 반환 값

`Number` 객체를 명시하는 문자열.

### 예외

`RangeError`

만약 `toString()` 에 `2` 와 `36` 의 사잇 값이 아닌 `radix` 가 주어지면, `RangeError` 에러가 발생합니다.

설명
--

`Number` 객체는 `Object` 객체의 `toString()`메소드를 오버라이딩하며, `Object.prototype.toString()` 를 상속받지 않습니다. `Number` 객체에서 `toString()` 메소드는 특정 진수로 객체를 표현한 문자열을 환원합니다.

`toString()` 메소드는 메소드의 첫 번째 아규먼트를 파싱하여, 메소드는 특정 기수(radix)를 기준으로 한 진수 값의 문자열을 환원하기 위한 시도를 합니다. 진수를 나타내는 기수 값(radix) 이 10 이상의 값일 때는, 알파벳의 글자는 9보다 큰 수를 나타냅니다. 예를 들면, 16진수(base 16)는, 알파벳 f 까지 사용하여 표현됩니다.

만약에 `radix`값 이 지정되지 않으면, 임의로 10진수로 가정하게 됩니다.

또, `numObj`가 음수라면, - 부호는 유지됩니다. 이는 기수(radix) 값이 2일 경우에라도 적용됩니다. 리턴된 문자열은 - 부호가 앞에 있는 `numObj` 의 양의 2진수 표시이지, `numObj`의 두 개의 조합이 아니기 때문입니다.

`numObj` 가 정수가 아니면, 점(.) 부호는 소수 자리와 분리하기 위해 사용됩니다.

예제
--

### `toString` 사용


```js
var count = 10;

console.log(count.toString()); // displays '10'
console.log((17).toString()); // displays '17'
console.log((17.2).toString()); // displays '17.2'

var x = 6;

console.log(x.toString(2)); // displays '110'
console.log((254).toString(16)); // displays 'fe'

console.log((-10).toString(2)); // displays '-1010'
console.log((-0xff).toString(2)); // displays '-11111111'
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-number.prototype.tostring |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `Number.prototype.toFixed()`
* `Number.prototype.toExponential()`
* `Number.prototype.toPrecision()`
Number.NEGATIVE\_INFINITY
=========================

**`Number.NEGATIVE_INFINITY`** 속성은 음의 무한대를 나타냅니다.

시도해보기
-----

| Property attributes of `Number.NEGATIVE_INFINITY` |
| --- |
| Writable | 불가능 |
| Enumerable | 불가능 |
| Configurable | 불가능 |

설명
--

`Number.NEGATIVE_INFINITY`의 값은 전역 객체 `Infinity` 속성의 부호를 바꾼 값과 동일합니다.

`NEGATIVE_INFINITY`는 수학에서의 무한대와 약간 다릅니다.

* `POSITIVE_INFINITY`를 포함한 아무 양의 수와 `NEGATIVE_INFINITY`를 곱한 결과는 `NEGATIVE_INFINITY`입니다.
* `NEGATIVE_INFINITY`를 포함한 아무 음의 수와 `NEGATIVE_INFINITY`를 곱한 결과는 `POSITIVE_INFINITY`입니다.
* 아무 양의 수를 `NEGATIVE_INFINITY`로 나눈 결과는 음의 부호를 가진 0입니다.
* 아무 음의 수를 `NEGATIVE_INFINITY`로 나눈 결과는 0입니다.
* 0을 `NEGATIVE_INFINITY`로 나눈 결과는 `NaN`입니다.
* `NaN`에 `NEGATIVE_INFINITY`를 곱한 결과는 `NaN`입니다.
* `NEGATIVE_INFINITY`를, `NEGATIVE_INFINITY`를 제외한 아무 음의 수로 나눈 결과는 `POSITIVE_INFINITY`입니다.
* `NEGATIVE_INFINITY`를, `POSITIVE_INFINITY`를 제외한 아무 양의 수로 나눈 결과는 `NEGATIVE_INFINITY`입니다.
* `NEGATIVE_INFINITY`를 `NEGATIVE_INFINITY` 또는 `POSITIVE_INFINITY`로 나눈 결과는 `NaN`입니다.

`Number.NEGATIVE_INFINITY`를 사용해 성공 시 유한수를 반환하는 식의 결과를 판별할 수 있습니다. 그러나 이런 경우 `isFinite()`를 사용하는 편이 더 적합합니다.

`NEGATIVE_INFINITY`는 `Number`의 정적 속성이기 때문에, 직접 생성한 `Number` 객체의 속성이 아니라 `Number.NEGATIVE_INFINITY`의 형식으로 사용해야 합니다.

예제
--

### `NEGATIVE_INFINITY` 사용하기

다음 코드에서 `smallNumber`는 JavaScript의 최솟값보다 작은 값을 할당받습니다. `if` 문이 실행되면, `smallNumber`의 값이 `-Infinity`이므로 `smallNumber`는 계산에 좀 더 적합한 값을 다시 할당합니다.


```js
var smallNumber = -Number.MAX\_VALUE \* 2;

if (smallNumber === Number.NEGATIVE\_INFINITY) {
  smallNumber = returnFinite();
}
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-number.negative\_infinity |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `Number.POSITIVE_INFINITY`
* `Number.isFinite()`
* `Infinity`
* `isFinite()`
Number.prototype.toPrecision()
==============================

**`toPrecision()`** 메서드는 `Number` 객체를 지정된 정밀도로 나타내는 문자열을 반환한다.

시도해보기
-----

문법
--


```js
numObj.toPrecision([precision]);
```

### 파라미터

`precision`

선택적 파라미터. 유효 자릿수를 지정하는 정수.

### 반환 값

고정 소수점 또는 지수 표기법의 `Number` 객체를 정밀 유효 숫자로 반올림 한 문자열입니다. `toPrecision()`에도 적용되는 `Number.prototype.toFixed()` 메서드에 대한 설명에서 반올림에 대한 설명을 참조하세요.

`precision(정밀도)` 인수가 생략되면 `Number.prototype.toString()`처럼 작동합니다. `precision(정밀도)` 인수가 정수가 아닌 값이면 가장 가까운 정수로 반올림됩니다.

### 예외

`RangeError`

`precision(정밀도)`가 1에서 100 사이가 아닌 경우 `RangeError`가 발생합니다. 구현은 더 큰 값과 더 작은 값을 지원할 수 있습니다. ECMA-262는 최대 21 자리의 정밀도 만을 요구합니다.

예제
--

### `toPrecision` 사용


```js
var numObj = 5.123456;

console.log(numObj.toPrecision()); // logs '5.123456'
console.log(numObj.toPrecision(5)); // logs '5.1235'
console.log(numObj.toPrecision(2)); // logs '5.1'
console.log(numObj.toPrecision(1)); // logs '5'

numObj = 0.000123;

console.log(numObj.toPrecision()); // logs '0.000123'
console.log(numObj.toPrecision(5)); // logs '0.00012300'
console.log(numObj.toPrecision(2)); // logs '0.00012'
console.log(numObj.toPrecision(1)); // logs '0.0001'

// 일부 상황에서는 지수 표기법이 반환 될 수 있습니다
console.log((1234.5).toPrecision(2)); // logs '1.2e+3'
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-number.prototype.toprecision |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `Number.prototype.toFixed()`
* `Number.prototype.toExponential()`
* `Number.prototype.toString()`