recursal/MDN huggingface dataset:
Math.ceil()
===========

Math.ceil() 함수는 주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자를 integer 로 반환합니다.Syntax (문법)
-----------


```js
Math.ceil(x);
```

### Parameters (매개변수)

`x`

숫자

### Return value (반환값)

주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자

Description (설명)
----------------

ceil() 은 Math 의 정적 메소드이므로, 사용자가 생성하는 Math 객체의 메소드처럼 사용하지 않고, 언제나 Math.ceil() 의 형태로 사용 합니다. (Math 는 생성자가 아님)

Examples (예제)
-------------

### Math.ceil() 사용 예

다음은 Math.ceil() 의 사용 예입니다.


```js
Math.ceil(0.95); // 1
Math.ceil(4); // 4
Math.ceil(7.004); // 8
Math.ceil(-0.95); // -0
Math.ceil(-4); // -4
Math.ceil(-7.004); // -7
```

### 소수점 처리


```js
// Closure
(function () {
  /\*\*
 \* Decimal adjustment of a number.
 \*
 \* @param {String} type The type of adjustment.
 \* @param {Number} value The number.
 \* @param {Integer} exp The exponent (the 10 logarithm of the adjustment base).
 \* @returns {Number} The adjusted value.
 \*/
  function decimalAdjust(type, value, exp) {
    // If the exp is undefined or zero...
    if (typeof exp === "undefined" || +exp === 0) {
      return Math[type](value);
    }
    value = +value;
    exp = +exp;
    // If the value is not a number or the exp is not an integer...
    if (isNaN(value) || !(typeof exp === "number" && exp % 1 === 0)) {
      return NaN;
    }
    // Shift
    value = value.toString().split("e");
    value = Math[type](+(value[0] + "e" + (value[1] ? +value[1] - exp : -exp)));
    // Shift back
    value = value.toString().split("e");
    return +(value[0] + "e" + (value[1] ? +value[1] + exp : exp));
  }

  // Decimal round
  if (!Math.round10) {
    Math.round10 = function (value, exp) {
      return decimalAdjust("round", value, exp);
    };
  }
  // Decimal floor
  if (!Math.floor10) {
    Math.floor10 = function (value, exp) {
      return decimalAdjust("floor", value, exp);
    };
  }
  // Decimal ceil
  if (!Math.ceil10) {
    Math.ceil10 = function (value, exp) {
      return decimalAdjust("ceil", value, exp);
    };
  }
})();

// Round
Math.round10(55.55, -1); // 55.6
Math.round10(55.549, -1); // 55.5
Math.round10(55, 1); // 60
Math.round10(54.9, 1); // 50
Math.round10(-55.55, -1); // -55.5
Math.round10(-55.551, -1); // -55.6
Math.round10(-55, 1); // -50
Math.round10(-55.1, 1); // -60
// Floor
Math.floor10(55.59, -1); // 55.5
Math.floor10(59, 1); // 50
Math.floor10(-55.51, -1); // -55.6
Math.floor10(-51, 1); // -60
// Ceil
Math.ceil10(55.51, -1); // 55.6
Math.ceil10(51, 1); // 60
Math.ceil10(-55.59, -1); // -55.5
Math.ceil10(-59, 1); // -50
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.ceil |

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

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

See also (추가 참조)
----------------

* `Math.abs()`
* `Math.floor()`
* `Math.round()`
* `Math.sign()`
* `Math.trunc()`
Math.min()
==========

**`Math.min()`** 함수는 주어진 숫자들 중 가장 작은 값을 반환합니다.

Syntax
------


```js
    Math.min([value1[, value2[, ...]]])
```

### Parameters

`value1, value2, ...`

숫자형

### Return value

주어진 숫자들 중 가장 작은 값. 만약 적어도 1개 이상의 인자값이 숫자형으로 변환이 불가능 한 경우 이 함수는 `NaN` 를 반환 합니다.

Description
-----------

`min()` 함수는 `Math` 의 정적 메소드 이므로, 사용자가 생성한 `Math` 객체의 메소드로 호출하는 것이 아닌 항상 `Math.min()` 으로 호출되어야 합니다. (`Math` 는 생성자가 아닙니다).

만약 주어진 인자값이 없을 경우, `Infinity` 가 반환됩니다.

만약 적어도 1개 이상의 인자값이 숫자형으로 변환이 불가능 한 경우, `NaN` 가 반환됩니다.

Examples
--------

### Using `Math.min()`

아래 수식은 `x` 와`y` 중 작은 값을 찾아 `z` 에 할당 합니다.


```js
var x = 10,
  y = -20;
var z = Math.min(x, y);
```

### Clipping a value with `Math.min()`

`Math.min()` 함수는 때때로 값 제한, 즉 항상 기준 보다 작거나 같은 값으로 제한하는 용도로 사용됩니다. 예를 들면,


```js
var x = f(foo);

if (x > boundary) {
  x = boundary;
}
```


위 코드는 다음과 같이 쓸 수 있습니다.


```js
var x = Math.min(f(foo), boundary);
```


`Math.max()` 함수 또한 같은 방식으로 기준보다 크거나 같은 값으로 제한하는 용도로 사용할 수 있습니다.

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.min |

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

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

See also
--------

* `Math.max()`
Math.max()
==========

**Math.max()** 함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환합니다.

시도해보기
-----

문법
--


```js
  Math.max()
  Math.max(값0)
  Math.max(값0, 값1)
  Math.max(값0, 값1, ... , 값N)
```

### 매개변수

`값1, 값2, ...`

가장 큰 값을 선택하고 반환할 0개 이상의 숫자입니다.

### 반환 값

 입력된 숫자 중 가장 큰 숫자를 반환합니다. 만약 인수 중 하나라도 숫자로 변환하지 못한다면 `NaN`로 반환합니다.
 매개변수를 제공하지 않은 경우 결과는 -`Infinity`입니다.

설명
--

max ()는 Math의 정적 메서드이기 때문에 만든 Math 개체의 메서드가 아닌 항상 Math.max ()로 사용해야합니다. (Math는 생성자가 아닙니다).

만약 아무 요소도 주어지지 않았다면 -`Infinity`로 반환합니다.

만약 한 개 이상의 요소가 숫자로 변환되지 않는다면 `NaN`로 반환됩니다.

예제
--

### `Math.max()함수 사용하기`


```js
Math.max(10, 20); // 20
Math.max(-10, -20); // -10
Math.max(-10, 20); // 20
```

### 배열의 최대값 가져오기

`Array.reduce()` 숫자 배열의 최대 값을 찾는 데 사용할 수 있습니다.
 숫자 배열의 요소, 각 값 비교 :

최대값을 찾는 데 사용할 수 있습니다.


```js
var arr = [1, 2, 3];
var max = arr.reduce(function (a, b) {
  return Math.max(a, b);
}, -Infinity);
```


 다음 함수는 `Function.prototype.apply ()`을 사용하여 숫자 배열에서 최대 요소를 찾습니다. `getMaxOfArray([1, 2, 3])`는
 `Math.max(1, 2, 3)`와 동일하지만 프로그래밍 방식으로 생성 된 모든 크기의 배열에서 `getMaxOfArray()`를 사용할 수 있습니다.


```js
function getMaxOfArray(numArray) {
  return Math.max.apply(null, numArray);
}
```


 새로운스프레드
연산자는 다음을 얻기 위해 솔루션을 `적용`하는 짧은 방법입니다.
 배열의 최대값:


```js
var arr = [1, 2, 3];
var max = Math.max(...arr);
```


또한 `spread operator`이 함수를 사용하면 배열의 숫자들 중 가장 큰 숫자를 쉽게 얻을 수 있습니다.


```js
var arr = [1, 2, 3];
var max = Math.max(...arr);
```


 그러나, 두 스프레드 (`...`)와 `apply` 모두 실패하거나 배열에 요소가 너무 많은 경우 잘못된 결과를 반환합니다.
 왜냐하면 배열이 함수 요소를 통과하기 때문입니다.
 배열 요소를 함수 매개 변수로 사용할 수 있습니다.
 apply와
built-in 함수들의 사용법은 여기서 확인 할 수 있습니다. `reduce`를 사용한 방법에는 해당 문제가 발생하지 않습니다.

표준
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.max |

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

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

같이보기
----

* `Math.min()`
Math.PI
=======

**`Math.PI`** 속성은 원의 둘레와 지름의 비율, 약 3.14159의 값을 가집니다.


Math.PI

=
π
≈
3.14159

\mathtt{\mi{Math.PI}} = \pi \approx 3.14159

시도해보기
-----

| Property attributes of `Math.PI` |
| --- |
| Writable | 불가능 |
| Enumerable | 불가능 |
| Configurable | 불가능 |

설명
--

`PI`는 `Math`의 정적 속성이므로, 사용자가 생성한 `Math` 객체의 속성으로 접근할 수 없고 항상 `Math.PI`를 사용해야 합니다. (`Math`는 생성자가 아닙니다)

예제
--

### `Math.PI` 사용하기

다음 함수는 `Math.PI`를 사용해 주어진 원의 반지름에서 둘레를 계산합니다.


```js
function calculateCircumference(radius) {
  return Math.PI \* (radius + radius);
}

calculateCircumference(1); // 6.283185307179586
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.pi |

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

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

같이 보기
-----

* `Math`
Math.trunc()
============

**`Math.trunc()`** 함수는 주어진 값의 소수부분을 제거하고 숫자의 정수부분을 반환합니다.

시도해보기
-----

구문
--


```js
Math.trunc(x);
```

### 매개변수

`x`

숫자

### 반환 값

주어진 숫자의 정수부분

설명
--

`Math`의 다른 함수 3개 `Math.floor()`,
 `Math.ceil()` 그리고 `Math.round()` 와는 다르게,
 `Math.trunc()` 단순하게 동작합니다. 함수는 주어진 값이 양수이건 음수이건 상관없이
 소수점 이하 우측부분을 *제거*하는 매우 단순한 동작을 합니다.

함수인자는 암묵적으로 숫자로 변환되어 메서드에 전달됩니다.

`trunc()` 함수는 `Math`의 정적 메서드이기 때문에 사용자가 생성한
 `Math` 객체의 메서드로 호출하는 것이 아닌 항상 `Math.trunc()` 형태로
 호출해야 합니다. (`Math` 는 생성자가 아닙니다).

예제
--

### `Math.trunc()`사용하기


```js
Math.trunc(13.37); // 13
Math.trunc(42.84); // 42
Math.trunc(0.123); // 0
Math.trunc(-0.123); // -0
Math.trunc("-1.123"); // -1
Math.trunc(NaN); // NaN
Math.trunc("foo"); // NaN
Math.trunc(); // NaN
```

표준
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.trunc |

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

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

See also
--------

* `Math.abs()`
* `Math.ceil()`
* `Math.floor()`
* `Math.round()`
* `Math.sign()`
Math.LN10
=========

**`Math.LN10`** 속성은 10의 자연로그 값, 약 2.302의 값을 가집니다.


Math.LN10

=
ln
(
10
)
≈
2.302

\mathtt{\mi{Math.LN10}} = \ln(10) \approx 2.302

시도해보기
-----

| Property attributes of `Math.LN10` |
| --- |
| Writable | 불가능 |
| Enumerable | 불가능 |
| Configurable | 불가능 |

설명
--

`LN10`은 `Math`의 정적 속성이므로, 사용자가 생성한 `Math` 객체의 속성으로 접근할 수 없고 항상 `Math.LN10`을 사용해야 합니다. (`Math`는 생성자가 아닙니다)

예제
--

### `Math.LN10` 사용하기

다음 함수는 10의 자연 로그 값을 반환합니다.


```js
function getNatLog10() {
  return Math.LN10;
}

getNatLog10(); // 2.302585092994046
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.ln10 |

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

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

같이 보기
-----

* `Math.exp()`
* `Math.log()`
* `Math.log10()`
Math.floor()
============

**`Math.floor()`** 함수는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환합니다.

시도해보기
-----

구문
--


```js
Math.floor(x);
```

### 매개변수

`x`

숫자.

### 반환 값

주어진 수 이하의 가장 큰 정수.

설명
--

`floor()`는 `Math`의 정적 메서드이므로, 사용자가 생성한 `Math` 객체의 메서드로 호출할 수 없고 항상 `Math.floor()`를 사용해야 합니다. (`Math`는 생성자가 아닙니다)

**참고:** `Math.floor(null)`은 `NaN` 대신 0을 반환합니다.

예제
--

### `Math.floor()` 사용하기


```js
Math.floor(45.95); // 45
Math.floor(45.05); // 45
Math.floor(4); // 4
Math.floor(-45.05); // -46
Math.floor(-45.95); // -46
```

### 십진수 조절


```js
// Closure
(function () {
  /\*\*
 \* 십진수 조절
 \*
 \* @param {String} type 조정 타입.
 \* @param {Number} value 숫자.
 \* @param {Integer} exp 지수 (10 로그의 조정값).
 \* @returns {Number} 조정값
 \*/
  function decimalAdjust(type, value, exp) {
    // exp가 undefined 또는 0인 경우...
    if (typeof exp === "undefined" || +exp === 0) {
      return Math[type](value);
    }
    value = +value;
    exp = +exp;
    // 값이 숫자가 아니거나 정수형이 아닌 경우...
    if (isNaN(value) || !(typeof exp === "number" && exp % 1 === 0)) {
      return NaN;
    }
    // Shift
    value = value.toString().split("e");
    value = Math[type](+(value[0] + "e" + (value[1] ? +value[1] - exp : -exp)));
    // Shift back
    value = value.toString().split("e");
    return +(value[0] + "e" + (value[1] ? +value[1] + exp : exp));
  }

  // 십진수 round
  if (!Math.round10) {
    Math.round10 = function (value, exp) {
      return decimalAdjust("round", value, exp);
    };
  }
  // 십진수 floor
  if (!Math.floor10) {
    Math.floor10 = function (value, exp) {
      return decimalAdjust("floor", value, exp);
    };
  }
  // 십진수 ceil
  if (!Math.ceil10) {
    Math.ceil10 = function (value, exp) {
      return decimalAdjust("ceil", value, exp);
    };
  }
})();

// Round
Math.round10(55.55, -1); // 55.6
Math.round10(55.549, -1); // 55.5
Math.round10(55, 1); // 60
Math.round10(54.9, 1); // 50
Math.round10(-55.55, -1); // -55.5
Math.round10(-55.551, -1); // -55.6
Math.round10(-55, 1); // -50
Math.round10(-55.1, 1); // -60
// Floor
Math.floor10(55.59, -1); // 55.5
Math.floor10(59, 1); // 50
Math.floor10(-55.51, -1); // -55.6
Math.floor10(-51, 1); // -60
// Ceil
Math.ceil10(55.51, -1); // 55.6
Math.ceil10(51, 1); // 60
Math.ceil10(-55.59, -1); // -55.5
Math.ceil10(-59, 1); // -50
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.floor |

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

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

같이 보기
-----

* `Math.abs()`
* `Math.ceil()`
* `Math.round()`
* `Math.sign()`
* `Math.trunc()`
Math.sign()
===========

**`Math.sign()`** 함수는 주어진 수의 부호를 나타내는 +/-1을 반환합니다. 단, `Math.sign()`에 제공한 수가 0일 경우 부호에 따라 +/-0을 반환합니다.

시도해보기
-----

구문
--


```js
Math.sign(x);
```

### 매개변수

`x`

숫자. `number` 자료형이 아닐 경우 자동으로 변환합니다.

### 반환 값

주어진 값의 부호를 나타내는 수.

* 값이 양의 수일 경우 `1`을 반환합니다.
* 값이 음의 수일 경우 `-1`을 반환합니다.
* 값이 양의 0일 경우 `0`을 반환합니다.
* 값이 음의 0일 경우 `-0`을 반환합니다.
* 이외의 경우 `NaN`을 반환합니다.
설명
--

`sign()`은 `Math`의 정적 메서드이므로, 사용자가 생성한 `Math` 객체의 메서드가 아니라 `Math.sign()`으로 호출해야 합니다. (`Math`는 생성자가 아닙니다)

예제
--

### `Math.sign()` 사용하기


```js
Math.sign(3); // 1
Math.sign(-3); // -1
Math.sign("-3"); // -1
Math.sign(0); // 0
Math.sign(-0); // -0
Math.sign(NaN); // NaN
Math.sign("foo"); // NaN
Math.sign(); // NaN
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.sign |

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

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

같이 보기
-----

* `core-js`의 `Math.sign` 폴리필
* `Math.abs()`
* `Math.ceil()`
* `Math.floor()`
* `Math.round()`
* `Math.trunc()`
Math.random()
=============

**`Math.random()`** 함수는 0 이상 1 미만의 구간에서 근사적으로 균일한(approximately uniform) 부동소숫점 의사난수를 반환하며, 이 값은 사용자가 원하는 범위로 변형할 수 있다. 난수 생성 알고리즘에 사용되는 초기값은 구현체가 선택하며, 사용자가 선택하거나 초기화할 수 없다.

**참고:** `Math.random()`은 암호학적으로 안전한 난수를 **제공하지 않으므로**, 보안과 관련된 어떤 것에도 이 함수를 사용해서는 안 된다. 그 대신 Web Crypto API의 `window.crypto.getRandomValues()` 메소드를 이용하여야 한다.

문법
--


```js
Math.random();
```

### 반환 값

0 이상 1 미만의 부동소숫점 의사 난수.

예제
--

### `Math.random()` 사용

JavaScript의 수(number)는 가까운 짝수로 반올림되는(round-to-nearest-even behavior) IEEE 754 부동소수점 실수이므로, 아래 함수들(`Math.random()` 자체에 대한 사항은 제외)에 명시된 범위는 정확하지 않음을 유의하라. 지나치게 큰 범위(2^53 이상)를 선택할 경우, *매우* 드문 경우 원래 포함되어서는 안 될 최댓값이 포함되는 경우가 있다.

### 0 이상 1 미만의 난수 생성하기


```js
function getRandom() {
  return Math.random();
}
```

### 두 값 사이의 난수 생성하기

이 예제는 주어진 두 값 사이의 난수를 생성한다. 함수의 반환값은 `min`보다 크거나 같으며, `max`보다 작다.


```js
function getRandomArbitrary(min, max) {
  return Math.random() \* (max - min) + min;
}
```

### 두 값 사이의 정수 난수 생성하기

이 예제는 주어진 두 값 사이의 **정수인** 난수를 생성한다. 반환값은 `min`(단, `min`이 정수가 아니면 `min`보다 큰 최소의 정수)보다 크거나 같으며, `max`보다 작다.


```js
function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() \* (max - min)) + min; //최댓값은 제외, 최솟값은 포함
}
```


**참고:** 이 예제에서 `Math.round()`를 대신 사용하려고 할 수 있으나, 이렇게 하면 난수가 고르게 분포하지 않게 된다.

### 최댓값을 포함하는 정수 난수 생성하기

위의`getRandomInt()` 함수는 최솟값을 포함하지만, 최댓값은 포함하지 않는다. 최솟값과 최댓값을 모두 포함하는 결과가 필요할 경우, 아래의 `getRandomIntInclusive()` 함수를 사용할 수 있다.


```js
function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() \* (max - min + 1)) + min; //최댓값도 포함, 최솟값도 포함
}
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.random |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Math.abs()
==========

**`Math.abs()`** 함수는 주어진 숫자의 절대값을
 반환합니다. `x`가 양수이거나 0이라면 `x`를 리턴하고,
 `x`가 음수라면 `x`의 반대값, 즉 양수를 반환합니다.

시도해보기
-----

구문
--


```js
Math.abs(x);
```

### 매개변수

`x`

숫자.

### 반환 값

주어진 숫자의 절대값.

설명
--

`abs()`는 `Math`의 정적 메서드이므로, 사용자가 생성한
 `Math` 객체의 메서드로 호출할 수 없고 항상
 `Math.abs()`를 사용해야 합니다. (`Math`는 생성자가
 아닙니다)

예제
--

### Math.abs()의 작동 방식

 빈 객체, 하나 이상의 요소를 가진 배열, 숫자가 아닌 문자열,
 `undefined`나 빈 매개변수를 받으면 `NaN`을 반환합니다.
 `null`, 빈 문자열이나 빈 배열을 제공하면 0을 반환합니다.


```js
Math.abs("-1"); // 1
Math.abs(-2); // 2
Math.abs(null); // 0
Math.abs(""); // 0
Math.abs([]); // 0
Math.abs([2]); // 2
Math.abs([1, 2]); // NaN
Math.abs({}); // NaN
Math.abs("string"); // NaN
Math.abs(); // NaN
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-math.abs |

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

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

같이 보기
-----

* `Math.ceil()`
* `Math.floor()`
* `Math.round()`
* `Math.sign()`
* `Math.trunc()`
Function.name
=============

**`function.name`** 속성(property)은 함수 이름을 반환합니다.

| Property attributes of `Function.name` |
| --- |
| Writable | 불가능 |
| Enumerable | 불가능 |
| Configurable | 가능 |

비표준, ES6 이전 구현에서는 설정가능(`configurable`) attribute도 `false`였음을 주의하세요.

설명
--

`name` 속성은 함수 이름 또는 (ES6 구현 이전) 익명(anonymous) 함수에 대해서는 빈 문자열을 반환합니다:


```js
function doSomething() {}

console.log(doSomething.name); // logs "doSomething"
```


`new Function(...)` 또는 그냥 `Function(...)` 구문으로 생성된 함수는 `name` 속성을 빈 문자열로 설정합니다. 다음 예에서는 익명 함수가 생성되므로 `name`은 빈 문자열을 반환합니다:


```js
var f = function () {};
var object = {
  someMethod: function () {},
};

console.log(f.name == ""); // true
console.log(object.someMethod.name == ""); // 역시 true
```


ES6 함수를 구현한 브라우저는 익명 함수 이름을 그 구문상 위치로부터 추측할 수 있습니다. 예를 들어:


```js
var f = function () {};
console.log(f.name); // "f"
```


function 식에서 이름으로 함수를 정의할 수 있습니다:


```js
var object = {
  someMethod: function object\_someMethod() {},
};
console.log(object.someMethod.name); // logs "object\_someMethod"

try {
  object_someMethod;
} catch (e) {
  console.log(e);
}
// ReferenceError: object\_someMethod가 정의되지 않음
```


함수 이름은 바꿀 수 없습니다, 이 속성은 읽기 전용입니다:


```js
var object = {
  // 익명
  someMethod: function () {},
};

object.someMethod.name = "someMethod";
console.log(object.someMethod.name); // 빈 문자열, someMethod는 익명
```


그러나 바꾸려면, `Object.defineProperty()`를 사용할 수 있습니다.

예
-

객체의 'class'를 확인하기 위해 `obj.constructor.name`을 사용할 수 있습니다:


```js
function a() {}

var b = new a();

console.log(b.constructor.name); // logs "a"
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-function-instances-name |

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

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

**지원이 중단되었습니다:** This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

> 
> **`function.arguments`** 속성은 함수로 부터 넘겨 받은 arguments에 해당하는 배열과 같은 객체이다. 간단하게 `arguments`를 대신 사용하자. 이 속성은 strict mode에서 꼬리 호출 최적화 때문에 금지 된다.
> 
> 
> 

설명
--

`function.arguments` 문법은 deprecated 되었다. 함수 내 에서 사용 가능한 객체`arguments`에 접근하는 추천되는 방법은 단순히 `arguments`변수로 참조하는 것이다.

반복문의 경우, 함수 `f` 가 여러번 호출 스택에 나타나면, `f.arguments`의 값은 함수의 가장 최근 호출 arguments를 나타낸다.

arguments의 값은 함수 실행 과정에서 특별한 호출이 없다면 일반적으로 null 이다 (즉, 함수가 호출은 되었으나 반환되지 않음).

예제
--

### arguments object를 사용한 예시


```js
function f(n) {
  g(n - 1);
}

function g(n) {
  console.log("before: " + g.arguments[0]);
  if (n > 0) {
    f(n);
  }
  console.log("after: " + g.arguments[0]);
}

f(2);

console.log("returned: " + g.arguments);

// Output

// before: 1
// before: 0
// after: 0
// after: 1
// returned: null
```

명세서
---

`function.arguments`는 표준이 아니다. ECMAScript 3에서 `arguments`를 참조하기 때문에 deprecated 되었다.

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

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

같이 보기
-----

* `arguments` 객체
* Functions and function scope
Function.prototype.toSource()
=============================

**비표준:** 이 기능은 비표준이므로 실제 프로덕션에서 사용하지 마세요. 모든 사용자 환경에서 작동하지 않을 수 도 있으며, 미래에 호환성 문제가 생길 수 있습니다.

**`toSource()`** 메소드는 객체의 소스 코드를 나타내는 스트링을 반환합니다.

구문
--


```js
    function.toSource();
```

### 반환 값

객체의 소스 코드를 나타내는 스트링.

설명
--

`toSource` 메소드는 다음 값들을 반환합니다.

* 내장 `Function` 객체에 대한 `toSource()` 는 소스 코드 사용이 불가함을 나타내는 다음 스트링을 반환합니다.

```js
function Function() {
    [native code]
}
```

* 커스텀 함수에 대한 `toSource()` 는 객체를 정의하는 JavaScript 코드를 스트링으로 반환합니다.

```js
// 예시:
function hello() {
  console.log("Hello, World!");
}

hello.toSource();
```



```js
// 결과:
"function hello() {
    console.log(\"Hello, World!\");
}"
```


이 메소드는 보통 JavaScript 에 의해 내부적으로 호출되며 코드에서 명시적으로 사용되지 않습니다. 디버깅할 때 객체의 컨텐츠를 검사하기 위해 `toSource` 를 호출해보실 수 있습니다.

명세서
---

어떠한 표준의 일부도 아닙니다. JavaScript 1.3 에서 구현되었습니다.

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

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

함께 보기
-----

* `Object.prototype.toSource()` (en-US)
Function.prototype.length
=========================

`함수` 인스턴스의 **`length`** 데이터 속성은 함수가 기대하는 인자의 수를 나타냅니다.

시도해보기
-----

값
-

숫자

| Property attributes of `Function.prototype.length` |
| --- |
| Writable | 불가능 |
| Enumerable | 불가능 |
| Configurable | 가능 |

설명
--

`length`는 함수 객체의 속성으로, 함수가 얼마나 많은 인수를 기대하는지 나타냅니다, 즉 형식 매개변수의 수.
 이 수는 나머지 매개변수를 포함하지 않습니다.
 그에 반해, `arguments.length`는 함수에
 지역(local)이고 실제로 함수에 전달된 인수의 수를 제공합니다.

`Function` 객체의 `length` 속성은 함수가 얼마나 많은 인수를 기대하는지 나타냅니다. 이는 형식 매개변수의
 수 입니다. 이 숫자는 나머지 매개변수를 포함하지
 않으며 기본 값을 가진 첫 번째 매개변수 이전의 매개 변수만 포함합니다. 반면
 `arguments.length`는 하나의 함수에 국한되어
 실제로 함수에 전달된 인수의 수를 제공합니다.

`Function` 생성자는 그 자체로 `function` 객체입니다. 그 `length` 데이터 속성은 값이
 `1`입니다.

 역사적인 이유로 인해 `Function.prototype`은 호출 가능한 자체입니다. `Function.prototype`의
 `length`속성 값은 `0`입니다.

예제
--

### 함수 length 사용하기


```js
console.log(Function.length); // 1

console.log((() => {}).length); // 0
console.log(((a) => {}).length); // 1
console.log(((a, b) => {}).length); // 2 etc.

console.log(((...args) => {}).length);
// 0, 나머지 매개변수는 세지 않습니다

console.log(((a, b = 1, c) => {}).length);
// 1, 기본값을 가진 매개변수 이전의 매개변수만 셉니다
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-function-instances-length |

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

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

참조
--

* `Function`
Uint32Array() constructor
=========================

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

구문
--


```js
new Uint32Array()
new Uint32Array(length)
new Uint32Array(typedArray)
new Uint32Array(object)

new Uint32Array(buffer)
new Uint32Array(buffer, byteOffset)
new Uint32Array(buffer, byteOffset, length)
```


> 
> **Note:** `Uint32Array()`는 오직 `new`로만 생성할 수 있습니다. `new` 없이 호출을 시도하면 `TypeError` 예외가 발생합니다.
> 
> 
> 

### 매개 변수

`TypedArray`를 참고하세요.

### 예외

`TypedArray`를 참고하세요.

예제
--

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


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

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

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

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

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

명세
--

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

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

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

같이 보기
-----

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

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

구문
--


```js
new Int8Array()
new Int8Array(length)
new Int8Array(typedArray)
new Int8Array(object)

new Int8Array(buffer)
new Int8Array(buffer, byteOffset)
new Int8Array(buffer, byteOffset, length)
```


**참고:** `Int8Array()`는 오직 `new`
 로만 생성할 수 있습니다. `new` 없이 호출을 시도하면 `TypeError` 예외가 발생합니다.


### 매개변수

`TypedArray`를 참고하세요.

### 예외

`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 # sec-typedarray-constructors |

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

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

같이 보기
-----

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