recursal/MDN huggingface dataset:
SyntaxError: invalid regular expression flag "x"
================================================

메세지
---
```

  SyntaxError: Syntax error in regular expression (Edge)
  SyntaxError: invalid regular expression flag "x" (Firefox)
  SyntaxError: Invalid regular expression flags (Chrome)
```

에러 타입
-----

`SyntaxError`무엇이 잘못되었을까?
-----------

코드에 잘못된 정규 표현식 플래그가 있습니다. 슬래시로 묶인 패턴으로 구성되어 있는 정규 표현식 문자에서 플래그는 두 번째 플래그 뒤에 정의됩니다. 플래그는 또한 `RegExp` 객체의 생성자 함수에서도 정의될 수 있습니다(두 번째 매개변수). 정규 표현식 플래그는 따로 또는 순서에 상관 없이 같이 사용될 수 있지만 ECMAScript에는 오직 5개만 있습니다.

정규 표현식에 플래그를 포함시키려면 아래의 문법을 사용하세요:


```js
var re = /pattern/flags;
```


또는


```js
var re = new RegExp("pattern", "flags");
```


| 플래그 | 설명 |
| --- | --- |
| `g` | 전역 검색. |
| i | 대소문자 구별 없이 검색. |
| m | 여러 줄(Multi-line) 검색. |
| u | 유니코드; 패턴을 유니코드 코드 포인트의 나열로 취급. |
| y | 현재 위치에서 검색. ("sticky" 검색). `sticky` (en-US) 참조. |

예제
--

5개의 플래그만이 유효합니다.


```js
/foo/bar;

// SyntaxError: invalid regular expression flag "b"
```


정규 표현식을 만들려고 했나요? 두 개의 슬래시가 포함된 표현식은 정규 표현식 문자로 해석됩니다.


```js
let obj = {
  url: /docs/Web
};

// SyntaxError: invalid regular expression flag "W"
```


아니면 문자열로 만들려고 했나요? 작은 따옴표 또는 큰 따옴표를 추가하여 문자열을 만듭니다.


```js
let obj = {
  url: "/docs/Web",
};
```

### 유효한 정규 표현식 플래그

JavaScript에서 허용하는 5개의 유효한 정규 표현식 플래그를 위의 표에서 확인하세요.


```js
/foo/g;
/foo/gim;
/foo/uy;
```

같이 보기
-----

* 정규 표현식
* XRegEx flags – 새로운 4개의 플래그(`n`, `s`, `x`, `A`)를 제공하는 정규 표현식 라이브러리
RangeError: invalid array length
================================

메세지
---
```

    RangeError: invalid array length (Firefox)
    RangeError: Invalid array length (Chrome)
    RangeError: Invalid array buffer length (Chrome)
```

에러 형식
-----

`RangeError`무엇이 잘못 된 것일까?
-------------

다음과 같은 원인 때문이다:

* 2^32와 같거나 이보다 긴, 혹은 음수의 길이를 가진 `Array`나 `ArrayBuffer`를 생성했기 때문에, 혹은
* `Array` 속성을 2^32와 같거나 이보다 긴 값으로 설정했기 때문이다.

`Array` 와 `ArrayBuffer` 의 길이에 제한을 둔 이유는, `Array` 나 `ArrayBuffer` 의 length 속성은 사인되지 않은(unsigned) 32 비트 정수로 반영되기 때문이다. 즉 `Array`나 `ArrayBuffer` 는 오직 0 ~`2^32-1` 사이의 값만을 저장할 수 있다.

Array의 length로 해석되는 첫번째 argument로서 문자열 표기를 통해 contructor를 사용하여 Array를 생성할 수 있다.

다른 방법으로는, length 속성을 설정하기 전에 length의 길이에 제한을 두거나, constructor의 aurgment로서 사용할 수 있다.

예제
--

### 잘못된 예제


```js
new Array(Math.pow(2, 40));
new Array(-1);
new ArrayBuffer(Math.pow(2, 32));
new ArrayBuffer(-1);

let a = [];
a.length = a.length - 1; // set -1 to the length property

let b = new Array(Math.pow(2, 32) - 1);
b.length = b.length + 1; // set 2^32 to the length property
```

### 올바른 예제


```js
[Math.pow(2, 40)]; // [ 1099511627776 ]
[-1]; // [ -1 ]
new ArrayBuffer(Math.pow(2, 32) - 1);
new ArrayBuffer(0);

let a = [];
a.length = Math.max(0, a.length - 1);

let b = new Array(Math.pow(2, 32) - 1);
b.length = Math.min(0xffffffff, b.length + 1);

// 0xffffffff is the hexadecimal notation for 2^32 - 1
// which can also be written as (-1 >>> 0)
```

참조
--

* `Array`
* `Array.length`
* `ArrayBuffer`
TypeError: More arguments needed
================================

메시지
---
```

    TypeError: argument is not an Object and is not null (Edge)
    TypeError: Object.create requires at least 1 argument, but only 0 were passed
    TypeError: Object.setPrototypeOf requires at least 2 arguments, but only 0 were passed
    TypeError: Object.defineProperties requires at least 1 argument, but only 0 were passed
```

에러 타입
-----

`TypeError`.

무엇이 잘 못 되었을까?
-------------

함수 호출 시 에러가 있습니다. 더 많은 인수가 주어져야 합니다.

예제
--

`Object.create()` 메서드는 적어도 1개의 인자가 필요하며, `Object.setPrototypeOf()` (en-US) 메서드는 적어도 2개의 인자가 필요합니다.:


```js
var obj = Object.create();
// TypeError: Object.create requires at least 1 argument, but only 0 were passed

var obj = Object.setPrototypeOf({});
// TypeError: Object.setPrototypeOf requires at least 2 arguments, but only 1 were passed
```


예를 들면, 이렇게 프로토 타입으로 `null`를 세팅해서 고칠 수 있습니다.:


```js
var obj = Object.create(null);

var obj = Object.setPrototypeOf({}, null);
```

참조
--

* Functions
SyntaxError: missing = in const declaration
===========================================

메시지
---
```

    SyntaxError: Const must be initalized (Edge)
    SyntaxError: missing = in const declaration (Firefox)
    SyntaxError: Missing initializer in const declaration (Chrome)
```

에러 유형
-----

`SyntaxError`무엇이 잘못되었나요?
-----------

상수는 일반적인 실행 중에 프로그램에 의해 변경될 수 없는 값입니다. 상수는 재할당되거나 재선언될 수 없습니다. JavaScript에서 상수는 `const` 키워드를 사용해 선언됩니다. 상수는 이니셜라이저가 필요합니다. 다시말해, 한 문장 안에 선언과 동시에 초기화가 이루어져야 합니다 (따라서 추후 수정 불가).

예제
--

### const 이니셜라이저가 빠진 경우

`var` 또는 `let`과 달리, `const` 선언에서는 반드시 값을 정의해야 합니다.


```js
const COLUMNS;
// SyntaxError: missing = in const declaration
```

### 에러 수정

해당 에러를 수정하기 위해서 여러가지 방법이 존재합니다. 문제 상황에서 상수를 사용해 무엇을 하려 했는지 확인해보세요.

#### 상수 값 추가

선언과 같은 문장에 상수 값을 정의합니다.


```js
const COLUMNS = 80;
```


#### `const`, `let`, `var`?

상수를 선언할 목적이 아니었다면 `const`를 사용하지 마세요. `let` 키워드를 이용한 블록범위 변수, 또는 `var` 키워드를 이용한 전역 변수를 사용할 수 있습니다. 두 가지 경우 모두 초기값을 요구하지 않습니다.


```js
let columns;
```

같이 보기
-----

* `const`
* `let`
* `var`
SyntaxError: missing ) after condition
======================================

메시지
---
```

    SyntaxError: missing ) after condition
```

에러 유형
-----

`SyntaxError`무엇이 잘못 된 걸까?
------------

`if`조건문에 에러가 있습니다. 어떠한 프로그래밍 언어에서든 코드는 입력값에 따라 의사를 결정하고 행동을 수행해야합니다. 지정된 조건이 true이면 if 문이 명령문을 실행합니다. JavaScript에서는 이 조건이 `if`문 다음의 괄호에 있어야 합니다. 다음은 그 예시입니다.


```js
if (condition) {
  // do something if the condition is true
}
```

예시
--

실수가 있을 수 있으니, 모든 괄호를 주의깊게 확인하세요.


```js
if (3 > Math.PI {
  console.log("wait what?");
}

// SyntaxError: missing ) after condition
```


이 코드를 고치기 위해선, 조건문을 괄호로 닫아야 합니다.


```js
if (3 > Math.PI) {
  console.log("wait what?");
}
```


다른 프로그래밍 언어를 배운 경우, JavaScript에서는 다르게 쓰이거나, 쓰이지 않는 키워드를 사용하기 쉽습니다.


```js
if (done is true) {
 console.log("we are done!");
}

// SyntaxError: missing ) after condition
```


이 경우 올바른 비교연산자 (en-US)를 사용해야 합니다. 그 예시로:


```js
if (done === true) {
  console.log("we are done!");
}
```

더 보기
----

* `if...else`
* Comparison operators (en-US)
* Making decisions in your code — conditionals
Int8Array
=========

**`Int8Array`** 타입 배열은 2의 보수 8비트 부호있는 정수의 배열을 나타냅니다. 배열의 내용은 `0`으로 초기화됩니다.
 배열이 생성되면 객체의 메서드를 사용하거나 표준 배열 인덱스 구문(즉, 대괄호 표기법 사용)을 사용하여 배열의 요소를 참조할 수 있습니다.

생성자
---

`Int8Array()`

새로운 `Int8Array` 객체를 생성합니다.

정적 속성
-----

부모 `TypedArray`에서 정적 속성을 상속합니다.

`Int8Array.BYTES_PER_ELEMENT`

요소 크기를 숫자로 반환합니다. `Int8Array`의 경우 `1`입니다..

`Int8Array.name`

생성자 이름을 문자열로 반환합니다. `Int8Array`의 경우 `"Int8Array"` 입니다..

정적 메서드
------

부모 `TypedArray`에서 정적 메서드를 상속합니다.

인스턴스 속성
-------

부모 `TypedArray`에서 인스턴스 속성을 상속합니다.

`Int8Array.prototype.BYTES_PER_ELEMENT`

요소 크기를 숫자로 반환합니다. `Int8Array`의 경우 `1` 입니다.

인스턴스 메서드
--------

부모 `TypedArray`에서 인스턴스 메서드를 상속합니다.

예제
--

### Int8Array를 생성하기 위한 각기 다른 여러 방법


```js
// 길이로부터 생성
const int8 = new Int8Array(2);
int8[0] = 42;
console.log(int8[0]); // 42
console.log(int8.length); // 2
console.log(int8.BYTES\_PER\_ELEMENT); // 1

// 배열로부터 생성
const x = new Int8Array([21, 31]);
console.log(x[1]); // 31

// 다른 TypedArray로부터 생성
const y = new Int8Array(x);
console.log(y[0]); // 21

// ArrayBuffer로부터 생성
const buffer = new ArrayBuffer(8);
const z = new Int8Array(buffer, 1, 4);
console.log(z.byteOffset); // 1

// 순회로부터 생성
const iterable = (function\* () {
  yield\* [1, 2, 3];
})();
const int8FromIterable = new Int8Array(iterable);
console.log(int8FromIterable);
// Int8Array [1, 2, 3]
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # table-49 |

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

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

같이 보기
-----

* `core-js`에서 `Int8Array` 폴리필
* JavaScript 형식화 배열
* `ArrayBuffer`
* `DataView`
Float32Array
============

**`Float32Array`** 형식화 배열(TypedArray)은 플랫폼의 바이트 순서를 따르는 32비트 부동 소수점(C의 `float`
 데이터 타입에 대응) 배열입니다. 바이트 순서를 제어해야 하는 경우 대신 `DataView`를 사용합니다. 배열의
 내용은 0으로 초기화됩니다. 배열이 생성되면 객체의 메서드를 사용하거나 표준 배열 인덱스 구문(즉, 대괄호 표기법 사용)을
 사용하여 배열의 요소를 참조할 수 있습니다.

생성자
---

`Float32Array()`

새로운 `Float32Array` 객체를 생성합니다.

정적 속성
-----

부모 `TypedArray`에서 정적 속성을 상속합니다.

`Float32Array.BYTES_PER_ELEMENT`

요소 크기를 숫자 값으로 반환합니다. `Float32Array`의 경우 `4`입니다.

`Float32Array.name`

생성자 이름을 문자열로 반환합니다. `Float32Array` 타입의 경우 `"Float32Array"`입니다.

정적 메서드
------

부모 `TypedArray`에서 정적 메서드를 상속합니다.

인스턴스 속성
-------

부모 `TypedArray`에서 인스턴스 속성을 상속합니다.

`Float32Array.prototype.BYTES_PER_ELEMENT`

요소 크기를 숫자 값으로 반환합니다. `Float32Array`의 경우 `4`입니다.

인스턴스 메서드
--------

부모 `TypedArray`에서 인스턴스 메서드를 상속합니다.

예제
--

### `Float32Array`를 생성하기 위한 각기 다른 여러 방법


```js
// 길이로부터 생성
const float32 = new Float32Array(2);
float32[0] = 42;
console.log(float32[0]); // 42
console.log(float32.length); // 2
console.log(float32.BYTES\_PER\_ELEMENT); // 4

// 배열로부터 생성
const x = new Float32Array([21, 31]);
console.log(x[1]); // 31

// 다른 TypedArray로부터 생성
const y = new Float32Array(x);
console.log(y[0]); // 21

// ArrayBuffer로부터 생성
const buffer = new ArrayBuffer(32);
const z = new Float32Array(buffer, 4, 4);
console.log(z.byteOffset); // 4

// 순회로부터 생성
const iterable = (function\* () {
  yield\* [1, 2, 3];
})();
const float32FromIterable = new Float32Array(iterable);
console.log(float32FromIterable);
// Float32Array [1, 2, 3]
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # table-49 |

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

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

같이 보기
-----

* `core-js`에서 `Float32Array`의 폴리필
* JavaScript 형식화 배열
* `ArrayBuffer`
* `DataView`
AsyncFunction
=============

Baseline Widely available
-------------------------

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.

* Learn more
* See full compatibility
* Report feedback
**`AsyncFunction`** 생성자는 새로운 `async function` 객체를 만든다. JavaScript에서 모든 비동기 함수는 사실상 AsyncFunction 객체이다.

`AsyncFunction`이 전역변수가 아님에 주의한다. 다음코드를 보면 알 수 있다.


```js
Object.getPrototypeOf(async function () {}).constructor;
```

문법
--


```js
    new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)
```

### 파라미터

`arg1, arg2, ... argN`

인수의 이름들은 함수내에서 사용되는 이름이다. 이름은 JavaScript 식별자 로 유용한 문자열이거나 컴마로 구분된 문자열 목록이어야 한다. 예를들면 "x","theValue",or"a,b"와 같다.

`functionBody`

함수 정의를 구성하는 JavaScript트 명령문들로 구성된 문자열.

상세설명
----

AsyncFunction 생성자를 통해 만들어진 `async function` 객체는 함수가 만들어질때 분석된다. 이방법에서는 코드가 실행되지 않을 때도 작동하기 때문에 `async function expression` 으로 비동기함수를 정의하고 해당 코드에서 호출할 때보다 비효율적이다.

함수에 전달된 모든 인수들은 전달된 순서대로 함수내에서 인수이름으로 식별자가 생성된 것처럼 다루어진다.

**참고:** **주의:** `AsyncFunction` 생성자로 만들어진 `async functions` 객체는 클로저를 생성 컨텍스트에 만들지 않는다; 이 객체들은 항상 전역 범위에서 생성됩니다.이 객체들을 실행할 때, `AsyncFunction`생성자가 호출된 범위의 변수가 아니라 자신의 지역 변수와 전역 변수에만 액세스 할 수 있습니다.이것은 비동기 함수 표현식을위한 코드와 함께 `eval`을 사용하는 것과 다릅니다.

`AsyncFunction` 생성자를 (`new` 연산자를 사용하지 않고) 함수로 호출하는 것과 생성자로 동작시키는 것은 동일하다.

속성
--

**`AsyncFunction.length`**

`AsyncFunction` 생성자의 `length` 속성(이 값은 1임).

**`AsyncFunction.prototype`**

모든 비동기 함수 객체에 속성을 추가할 수 있도록 함.

**`AsyncFunction.constructor`**

초기값은 `AsyncFunction`임.

**`AsyncFunction.prototype[@@toStringTag]`**

"AsyncFunction"을 반환.

`AsyncFunction 인스턴스`
--------------------

`AsyncFunction` 인스턴스는 `AsyncFunction.prototype` 에서 메소드와 속성을 상속받는다.

여느 생성자에서와 같이 모든 `AsyncFunction` 인스턴스들을 수정할 수 있도록 생성자의 `prototype` 객체를 수정할 수 있다.

예제
--

### `AsyncFunction` 생성자를 통한 비동기 함수 만들기


```js
function resolveAfter2Seconds(x) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

let AsyncFunction = Object.getPrototypeOf(async function () {}).constructor;

let a = new AsyncFunction(
  "a",
  "b",
  "return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);",
);

a(10, 20).then((v) => {
  console.log(v); // 4초 후에 30을 출력
});
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-async-function-objects |

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

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

참고 문서
-----

* `async function function`
* `async function expression`
* `Function`
* `function statement`
* `function expression`
* Functions and function scope (en-US)
RangeError
==========

**`RangeError`** 객체는 어떤 값이 집합에 없거나 허용되는 범위가 아닐 때 오류를 나타냅니다.

설명
--

어떤 값을 그 값이 포함되는 범위를 허용하지 않는 함수에 인수로 전달하려 할 때 `RangeError`가 발생합니다.

이 문제는 다음과 같은 경우에 발생할 수 있습니다.

* 허용되는 문자열이 아닌 값을 `String.prototype.normalize()`에 전달하거나,
* `Array` 생성자를 통해 잘못된 길이의 배열을 만드려고 시도하거나,
* 숫자 메서드 `Number.prototype.toExponential()`,
 `Number.prototype.toFixed()` 혹은 `Number.prototype.toPrecision()`에
 나쁜 값을 전달하는 경우.

`RangeError`는 직렬화 가능한 객체이기 때문에,
 `structuredClone()`로 복제하거나
 `postMessage()` (en-US)를 사용하여
 Workers 간에 복사할 수 있습니다.

생성자
---

`RangeError()`

새로운 `RangeError` 객체를 만듭니다.

인스턴스 속성
-------

`RangeError.prototype.message`

오류 메시지. `Error.prototype.message`를 상속되었습니다.

`RangeError.prototype.name`

오류 이름. `Error`로부터 상속되었습니다.

`RangeError.prototype.cause`

에러 원인. `Error`로부터 상속되었습니다..

`RangeError.prototype.fileName`

오류가 발생한 파일 경로. `Error`로부터 상속되었습니다.

`RangeError.prototype.lineNumber`

오류가 발생한 곳의 줄 위치. `Error`로부터 상속되었습니다.

`RangeError.prototype.columnNumber`

오류가 발생한 곳의 열 위치. `Error`로부터 상속되었습니다.

`RangeError.prototype.stack` (en-US)

스택 추적. `Error`로부터 상속되었습니다.

예제
--

### RangeError 사용하기(숫자 값일 경우)


```js
function check(n) {
  if (!(n >= -500 && n <= 500)) {
    throw new RangeError("The argument must be between -500 and 500.");
  }
}
try {
  check(2000);
} catch (error) {
  if (error instanceof RangeError) {
    // Handle the error
  }
}
```

### RangeError 사용하기 (숫자값이 아닐 경우)


```js
function check(value) {
  if (!["apple", "banana", "carrot"].includes(value)) {
    throw new RangeError(
      'The argument must be an "apple", "banana", or "carrot".',
    );
  }
}
try {
  check("cabbage");
} catch (error) {
  if (error instanceof RangeError) {
    // Handle the error
  }
}
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-native-error-types-used-in-this-standard-rangeerror |

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

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

같이 보기
-----

* `Error`
* `Array`
* `Number.prototype.toExponential()`
* `Number.prototype.toFixed()`
* `Number.prototype.toPrecision()`
* `String.prototype.normalize()`
Generator
=========

**`Generator`** 객체는 generator function 으로부터 반환되며, 반복 가능한 프로토콜과 반복자 프로토콜을 모두 준수합니다.

Constructor
-----------

이 객체는 바로 인스턴스화할 될 수 없습니다. 대신 제너레이터 함수를 통해 `Generator` 인스턴스를 반환할 수 있습니다.


```js
function\* generator() {
  yield 1;
  yield 2;
  yield 3;
}

const gen = generator(); // "Generator { }"

console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3
```

인스턴스 메서드
--------

`Generator.prototype.next()`

`yield` 표현식을 통해 yield된 값을 반환합니다.

`Generator.prototype.return()`

주어진 값을 반환하고 제너레이터를 종료합니다.

`Generator.prototype.throw()`

제너레이터에 오류를 발생시킵니다. (해당 제너레이터 내에서 오류가 발생한 경우가 아닌 한 제너레이터도 완료)

예제
--

### 무한 제너레이터

제너레이터 함수를 사용하면 값은 필요할 때까지 계산되지 않습니다. 따라서 제너레이터는 잠재적으로 무한한 데이터 구조를 정의할 수 있습니다.


```js
function\* infinite() {
  let index = 0;

  while (true) {
    yield index++;
  }
}

const generator = infinite(); // "Generator { }"

console.log(generator.next().value); // 0
console.log(generator.next().value); // 1
console.log(generator.next().value); // 2
// ...
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-generator-objects |

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

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

같이 보기
-----

* `function*`
* `function*` expression
* `GeneratorFunction`
* 반복자 프로토콜
BigUint64Array
==============

**`Uint16Array`** 형식화 배열(TypedArray)은 플랫폼의 바이트 순서를 따르는 64비트 부호 없는 정수의 배열입니다.
 바이트 순서를 제어해야 하는 경우 `DataView`를 대신 사용합니다. 배열의 내용은 `0n`으로 초기화됩니다.
 배열이 생성되면 객체의 메서드를 사용하거나 표준 배열 인덱스 구문(즉, 대괄호 표기법 사용)을 사용하여 배열의 요소를 참조할 수 있습니다.

생성자
---

`BigUint64Array()`

새로운 `BigUint64Array` 객체를 생성합니다.

정적 속성
-----

부모 `TypedArray`에서 정적 속성을 상속합니다.

`BigUint64Array.BYTES_PER_ELEMENT`

요소 크기를 숫자 값으로 반환합니다. `BigUint64Array`의 경우 `8` 입니다.

`BigUint64Array.name`

생성자 이름을 문자열로 반환합니다. `BigUint64Array` 타입의 경우 `"BigUint64Array"`입니다.

정적 메서드
------

부모 `TypedArray`에서 정적 메서드를 상속합니다.

인스턴스 속성
-------

부모 `TypedArray`에서 인스턴스 속성을 상속합니다.

`BigUint64Array.prototype.BYTES_PER_ELEMENT`

요소 크기를 숫자 값으로 반환합니다. `BigUint64Array`의 경우 `8` 입니다.

인스턴스 메서드
--------

부모 `TypedArray`에서 인스턴스 메서드를 상속합니다.

예제
--

### `BigUint64Array`를 생성하기 위한 각기 다른 여러 방법


```js
// 길이로부터 생성
const biguint64 = new BigUint64Array(2);
biguint64[0] = 42n;
console.log(biguint64[0]); // 42n
console.log(biguint64.length); // 2
console.log(biguint64.BYTES\_PER\_ELEMENT); // 8

// 배열로부터 생성
const x = new BigUint64Array([21n, 31n]);
console.log(x[1]); // 31n

// 다른 TypedArray로부터 생성
const y = new BigUint64Array(x);
console.log(y[0]); // 21n

// ArrayBuffer로부터 생성
const buffer = new ArrayBuffer(64);
const z = new BigUint64Array(buffer, 8, 4);
console.log(z.byteOffset); // 8

// 순회로부터 생성
const iterable = (function\* () {
  yield\* [1n, 2n, 3n];
})();
const biguint64FromIterable = new BigUint64Array(iterable);
console.log(biguint64FromIterable);
// BigUint64Array [1n, 2n, 3n]
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-typedarray-objects |

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

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

같이 보기
-----

* JavaScript 형식화 배열
* `BigInt64Array`
* `DataView`
decodeURIComponent()
====================

**`decodeURIComponent()`** 함수는 `encodeURIComponent` 나 비슷한 방법으로 생성된 Uniform Resource Identifier(URI) 컴포넌트를 해독합니다.

시도해보기
-----

구문
--


```js
decodeURIComponent(encodedURI);
```

### 매개변수

`encodedURI`

암호화된 Uniform Resource Identifier(URI) 컴포넌트.

### 반환 값

이스케이프되지 않은 특정 글자들 중 새로운 문자열.

### 예외

잘못 사용되었을 경우 `URIError` ( " malformed URI sequence ") 예외를 발생시킵니다.

설명
--

암호화된 URI 컴포넌트에서 각각의 이스케이프 시퀀스(확장 문자열)를 자신을 나타내는 문자로 바꿉니다.

예제
--

### 키릴문자 URL 컴포넌트의 복호화


```js
decodeURIComponent("JavaScript\_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
// "JavaScript\_шеллы"
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-decodeuricomponent-encodeduricomponent |

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

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

같이 보기
-----

* `decodeURI`
* `encodeURI`
* `encodeURIComponent`
Uint8Array
==========

**`Uint8Array`** 형식화 배열(TypedArray)은 플랫폼의 바이트 순서를 따르는 8비트 부호 없는 정수의 배열을 나타냅니다.
 배열의 내용은 0으로 초기화됩니다.
 배열이 생성되면 객체의 메서드를 사용하거나 표준 배열 인덱스 구문(즉, 대괄호 표기법 사용)을 사용하여 배열의 요소를 참조할 수 있습니다.

생성자
---

`Uint8Array()`

새로운 `Uint8Array` 객체를 생성합니다.

정적 속성
-----

부모 `TypedArray`에서 정적 속성을 상속합니다.

`Uint8Array.BYTES_PER_ELEMENT`

요소 크기를 숫자 값으로 반환합니다. `Uint8Array`의 경우 `1` 입니다.

`Uint8Array.name`

생성자 이름을 문자열로 반환합니다. `Uint8Array` 타입의 경우 `"Uint8Array"`입니다.

정적 메서드
------

부모 `TypedArray`에서 정적 메서드를 상속합니다.

인스턴스 속성
-------

부모 `TypedArray`에서 인스턴스 속성을 상속합니다.

`Uint8Array.prototype.BYTES_PER_ELEMENT`

요소 크기를 숫자 값으로 반환합니다. `Uint8Array`의 경우 `1` 입니다.

인스턴스 메서드
--------

부모 `TypedArray`에서 인스턴스 메서드를 상속합니다.

예제
--

### Uint8Array을 생성하기 위한 각기 다른 여러 방법


```js
// 길이로부터 생성
const uint8 = new Uint8Array(2);
uint8[0] = 42;
console.log(uint8[0]); // 42
console.log(uint8.length); // 2
console.log(uint8.BYTES\_PER\_ELEMENT); // 1

// 배열로부터
const x = new Uint8Array([21, 31]);
console.log(x[1]); // 31

// 다른 TypedArray로부터
const y = new Uint8Array(x);
console.log(y[0]); // 21

// ArrayBuffer로부터
const buffer = new ArrayBuffer(8);
const z = new Uint8Array(buffer, 1, 4);
console.log(z.byteOffset); // 1

// 순회로부터
const iterable = (function\* () {
  yield\* [1, 2, 3];
})();
const uint8FromIterable = new Uint8Array(iterable);
console.log(uint8FromIterable);
// Uint8Array [1, 2, 3]
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # table-49 |

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

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

같이 보기
-----

* `core-js`에서 `Uint8Array` 폴리필
* JavaScript 형식화 배열
* `ArrayBuffer`
* `DataView`
isFinite()
==========

**`isFinite()`** 전역 함수는 주어진 값이 유한수인지 판별합니다. 필요한 경우 매개변수를 먼저 숫자로 변환합니다.

시도해보기
-----

구문
--


```js
isFinite(testValue);
```

### 매개변수

`testValue`

유한한지 판별할 값.

### 반환 값

`testValue`가 양 또는 음의 `Infinity`, `NaN`, 또는 `undefined`면 `false`, 아니면 `true`.

설명
--

`isFinite()`은 최상위 함수로 어떤 객체와도 연결되지 않았습니다.

숫자가 유한수인지 판별하기 위해 `isFinite()`을 사용할 수 있습니다. `isFinite()`은 주어진 수를 검사해 그 값이 `NaN`, 양의 무한대, 또는 음의 무한대이면 `false`를 반환합니다. 그렇지 않으면 `true`를 반환합니다.

예제
--

### `isFinite()` 사용하기


```js
isFinite(Infinity); // false
isFinite(NaN); // false
isFinite(-Infinity); // false

isFinite(0); // true
isFinite(2e64); // true
isFinite(910); // true

isFinite(null); // true, would've been false with the
// more robust Number.isFinite(null)

isFinite("0"); // true, would've been false with the
// more robust Number.isFinite("0")
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-isfinite-number |

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

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

같이 보기
-----

* `Number.isFinite()`
* `Number.NaN()`
* `Number.POSITIVE_INFINITY`
* `Number.NEGATIVE_INFINITY`
TypeError
=========

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

다음과 같은 경우 `TypeError`가 발생할 수 있습니다.

* 함수에 전달된 피연산자 또는 인수가 해당 연산자나 함수가 예상하는 타입과 호환되지 않을 경우
* 변경할 수 없는 값을 수정하려고 할 경우
* 부적절한 방법으로 값을 사용하려고 할 경우

`TypeError`는 직렬화 가능한 객체이기 때문에,
 `structuredClone()`로 복제하거나
 `postMessage()` (en-US)를 사용하여
 Workers 간에 복사할 수 있습니다.

생성자
---

`TypeError()`

새로운 `TypeError` 객체를 생성합니다.

인스턴스 속성
-------

`TypeError.prototype.message`

오류 메시지. `Error`로부터 상속되었습니다.

`TypeError.prototype.name`

오류 이름. `Error`로부터 상속되었습니다.

`TypeError.prototype.cause`

오류 원인. `Error`로부터 상속되었습니다.

`TypeError.prototype.fileName` 
비표준

오류가 발생한 파일 경로. `Error`로부터 상속되었습니다.

`TypeError.prototype.lineNumber` 
비표준

오류가 발생한 곳의 줄 위치. `Error`로부터 상속되었습니다.

`TypeError.prototype.columnNumber` 
비표준

오류가 발생한 곳의 열 위치. `Error`로부터 상속되었습니다.

`TypeError.prototype.stack` (en-US)

스택 추적. `Error`로부터 상속되었습니다.

예제
--

### `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-native-error-types-used-in-this-standard-typeerror |

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

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

같이 보기
-----

* `Error`