Date.prototype.getTimezoneOffset() - JavaScript

Date.prototype.getTimezoneOffset()
==================================

**getTimezoneOffset()** 메소드는 현재 로케일 (즉, 호스트 시스템 설정)에 대한 시간대 오프셋 (UTC)을 분 단위로 반환합니다.

Syntax
------

```js
dateObj.getTimezoneOffset();
```

### Return value

현재 호스트 설정을 기반으로하는 날짜에 대한 시간대 오프셋 (UTC) (분)을 나타내는 숫자입니다.

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

시간대 오프셋은 UTC와 현지 시간의 차이 (분)입니다. 이것은 로컬 시간대가 UTC보다 뒤떨어져 있으면 오프셋이 양수이고 앞에있을 경우 음수임을 의미합니다. 예를 들어, 시간대 UTC + 10 : 00 (오스트레일리아 동부 표준시, 블라디보스토크 시간, 차모로 표준시)의 경우 -600이 반환됩니다.

반환 된 표준 시간대 오프셋은 호출 된 날짜에 적용되는 오프셋입니다. 호스트 시스템이 일광 절약 시간으로 구성된 경우 오프셋은 Date가 나타내는 날짜와 시간에 따라 변경되고 일광 절약 시간이 적용됩니다.

Examples
--------

### Using `getTimezoneOffset()`

```js
// 호스트 장치의 현재 시간대 오프셋 가져 오기
var x = new Date();
var currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60;

// 2016 년 국제 노동절 (5 월 1 일)에 대한 시간대 오프셋 가져 오기
var labourDay = new Date(2016, 4, 1);
var labourDayOffset = labourDay.getTimezoneOffset() / 60;
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.gettimezoneoffset |

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

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


Date.prototype.getUTCMonth() - JavaScript

Date.prototype.getUTCMonth()
============================

**getUTCMonth()** 는 지정된 날짜의 월을 0부터 시작하는 값 (0은 첫 해를 나타냄)으로 표준시에 따라 반환합니다.

Syntax
------

```js
dateObj.getUTCMonth();
```

### Return value

0부터 11까지의 정수로, 표준시에 따라 주어진 날짜의 달에 해당합니다. 1 월은 0, 2 월은 1, 3 월은 2 등입니다.

Examples
--------

### Using `getUTCMonth()`

다음 예제에서는 현재 날짜의 월 부분을 month 변수에 할당합니다.

```js
var today = new Date();
var month = today.getUTCMonth();
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getutcmonth |

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

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

See also
--------

* `Date.prototype.getMonth()`
* `Date.prototype.setUTCMonth()`


Date.prototype.setHours() - JavaScript

Date.prototype.setHours()
=========================

setHours () 메서드는 현지 시간에 따라 지정된 날짜의 시간을 설정하고 1970 년 1 월 1 일 00:00:00 UTC 이후 업데이트 된 `Date`에 의해 표시되는 시간 (밀리 초)을 반환합니다. 예.

Syntax
------

```js
    dateObj.setHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])
```

### Versions prior to JavaScript 1.3

```js
dateObj.setHours(hoursValue);
```

### Parameters

`hoursValue`

시를 나타내는 0에서 23 사이의 정수입니다.

`minutesValue`

선택 과목. 분을 나타내는 0에서 59 사이의 정수입니다.

`secondsValue`

선택 과목. 초를 나타내는 0에서 59 사이의 정수입니다. secondsValue 매개 변수를 지정하면 minutesValue도 지정해야합니다.

`msValue`

선택 과목. 밀리 초를 나타내는 0에서 999 사이의 숫자입니다. msValue 매개 변수를 지정하는 경우 minutesValue 및 secondsValue도 지정해야합니다.

### Return value

1970 년 1 월 1 일 00:00:00 UTC와 업데이트 된 날짜 사이의 밀리 초 숫자입니다.

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

minutesValue, secondsValue 및 msValue 매개 변수를 지정하지 않으면 `getMinutes()`에서 반환 된 값, `getSeconds()` 및 `getMilliseconds()` 메서드가 사용됩니다.

지정한 매개 변수가 예상 범위를 벗어나면 setHours ()는 그에 따라 `Date` 객체의 날짜 정보를 업데이트하려고 시도합니다. 예를 들어 secondsValue에 100을 사용하면 분은 1 (minutesValue + 1)만큼 증가하고 40은 초 단위로 사용됩니다.

Examples
--------

### Using `setHours()`

```js
var theBigDay = new Date();
theBigDay.setHours(7);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.sethours |

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

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

See also
--------

* `Date.prototype.getHours()`
* `Date.prototype.setUTCHours()`


Date.prototype.getUTCFullYear() - JavaScript

Date.prototype.getUTCFullYear()
===============================

**getUTCFullYear()** 메서드는 표준시에 따라 지정된 날짜의 연도를 반환합니다.

Syntax
------

```js
dateObj.getUTCFullYear();
```

### Return value

주어진 날짜의 연도를 표준시에 따라 나타내는 숫자입니다.

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

**getUTCFullYear()** 에 의해 반환 된 값은 1995 년과 같이 2000 년과 호환되는 절대 숫자입니다.

Examples
--------

### Using `getUTCFullYear()`

다음 예제에서는 현재 연도의 4 자리 값을 변수 year에 할당합니다.

```js
var today = new Date();
var year = today.getUTCFullYear();
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getutcfullyear |

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

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

See also
--------

* `Date.prototype.getFullYear()`
* `Date.prototype.setFullYear()`


Date.prototype.setSeconds() - JavaScript

Date.prototype.setSeconds()
===========================

`setSeconds()` 메서드는 현지 시간에 따라 지정된 날짜의 초를 설정합니다.

시도해보기
-----

구문
--

```js
setSeconds(secondsValue)
setSeconds(secondsValue, msValue)
```

### 매개변수

`secondsValue`

초를 나타내는 0에서 59 사이의 정수입니다.

`msValue` Optional

선택 과목. 밀리 초를 나타내는 0에서 999 사이의 숫자입니다.

### 반환 값

1970년 1월 1일 00:00:00 UTC와 업데이트 된 날짜 사이의 밀리 초 숫자입니다.

설명
--

`msValue` 매개 변수를 지정하지 않으면
 `getMilliseconds()` 메서드에서
 반환된 값이 사용됩니다.

 지정한 매개 변수가 예상 범위를 벗어나면 `setSeconds()`는 `Date` 객체의 날짜 정보를 업데이트하려고
 시도합니다. 예를 들어, `secondsValue`에 100을 사용하면 `Date` 객체에 저장된 분 값이 1 증가하고
 초 값은 40이 됩니다.

예제
--

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

```js
var theBigDay = new Date();
theBigDay.setSeconds(30);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.setseconds |

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

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

같이 보기
-----

* `Date.prototype.getSeconds()`
* `Date.prototype.setUTCSeconds()`


Date.prototype.toString() - JavaScript

Date.prototype.toString()
=========================

**`toString()`** 메서드는 `Date` 객체의 시간을 문자열로 반환합니다.

시도해보기
-----

구문
--

```js
dateObj.toString();
```

### 반환 값

주어진 날짜를 나타내는 문자열.

설명
--

`Date` 객체는 `toString()` 메서드를 `Object.prototype` (en-US)이 아닌 `Date.prototype`에서 상속받습니다. `Date.prototype.toString()`의 반환값은 ECMA-262에 명시되어있으며 다음과 같이 요약할 수 있습니다.

* 요일: 세 글자 영어 요일명. 예: "Sat"
* 공백
* 월: 세 글자 영어 월 이름. 예: "Sep"
* 공백
* 일: 두 글자 숫자. 예: "01"
* 공백
* 연: 네 글자 숫자. 예: "2018"
* 공백
* 시: 두 글자 숫자. 예: "14"
* 콜론
* 분: 두 글자 숫자. 예: "53"
* 콜론
* 초: 두 글자 숫자. 예: "26"
* 공백
* 문자열 "GMT"
* 시간대 차이의 부호.
    + 0 이상일 경우 "+"
    + 0 미만일 경우 "-"
* 두 글자 숫자로 표현한 시 차이. 예: "14"
* 두 글자 숫자로 표현한 분 차이. 예: "00"
* 선택사항: 다음으로 구성한 시간대의 이름.
    + 공백
    + 여는 소괄호
    + 구현마다 다를 수 있는 시간대 이름. 약어와 전체 이름 둘 다 가능. 예: "Korea Standard Time", "한국 표준시" 또는 "KST"
    + 닫는 소괄호

예: "Sat Sep 01 2018 14:53:26 GMT+0900 (KST)"

ECMAScript 2018(제9판) 전까지 `toString()`의 반환 형식은 구현에 따라 다를 수 있었습니다. 따라서 특정 형식에 의존하지 않아야 합니다.

`toString()` 메서드는 날짜를 문자열로 표현해야 할 때 자동으로 쓰입니다. `console.log(new Date())`와 `const today = 'Today is ' + new Date()` 등의 경우를 예로 들 수 있습니다.

`toString()`은 제네릭 메서드로 `this`의 값이 `Date`일 필요는 없습니다. 그러나 내부적으로 `[[TimeValue]]` 속성이 필요한데, 이는 JavaScript로는 설정할 수 없어 결국 사용이 `Date` 인스턴스로 제한됩니다. `Date` 외의 다른 객체에서 호출하면 `TypeError`가 발생합니다.

예제
--

### `toString()` 사용

```js
var x = new Date();
var myVar = x.toString(); // assigns a string value to myVar in the same format as:
// Mon Sep 08 1998 14:36:22 GMT+0900 (KST)
```

명세
--

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

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

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

같이 보기
-----

* `Object.prototype.toString()`
* `Date.prototype.toDateString()` (en-US)
* `Date.prototype.toLocaleString()`
* `Date.prototype.toTimeString()` (en-US)


Date.prototype.getMinutes() - JavaScript

Date.prototype.getMinutes()
===========================

**`getMinutes()`** 메서드는 `Date` 인스턴스의 분을 현지 시간 기준으로 반환합니다.

시도해보기
-----

구문
--

```js
dateObj.getMinutes();
```

### 반환 값

주어진 날짜의 현지 시간 기준 분을 나타내는 0에서 59 사이의 정수.

예제
--

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

다음 예제는 `Date` 객체 `Xmas95`의 분을 사용해 변수 `minutes`에 15를 할당합니다.

```js
var Xmas95 = new Date("December 25, 1995 23:15:30");
var minutes = Xmas95.getMinutes();

console.log(minutes); // 15
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getminutes |

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

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

같이 보기
-----

* `Date.prototype.getUTCMinutes()`
* `Date.prototype.setMinutes()`


Date.prototype.setDate() - JavaScript

Date.prototype.setDate()
========================

**setDate()** 메서드는 현재 설정된 월의 시작 부분을 기준으로 `Date` 객체의 날짜를 설정합니다.

Syntax
------

```js
dateObj.setDate(dayValue);
```

### Parameters

`dayValue`

월의 일을 나타내는 정수입니다.

### Return value

1970 년 1 월 1 일 00:00:00 UTC와 주어진 날짜 사이의 밀리 초 (`Date` 개체도 변경됩니다).

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

dayValue가 해당 월의 날짜 값 범위를 벗어나면 setDate ()는 그에 따라 `Date` 객체를 업데이트합니다. 예를 들어, dayValue에 0이 제공되면 날짜는 이전 달의 마지막 날로 설정됩니다.

Examples
--------

### Using `setDate()`

```js
var theBigDay = new Date(1962, 6, 7); // 1962-07-07
theBigDay.setDate(24); // 1962-07-24
theBigDay.setDate(32); // 1962-08-01
theBigDay.setDate(22); // 1962-08-22
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.setdate |

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

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

See also
--------

* `Date.prototype.getDate()`
* `Date.prototype.setUTCDate()`


Date.prototype.getUTCMinutes() - JavaScript

Date.prototype.getUTCMinutes()
==============================

**getUTCMinutes()** 메서드는 표준시에 따라 지정된 날짜의 분을 반환합니다.

Syntax
------

```js
dateObj.getUTCMinutes();
```

### Return value

0부터 59까지의 정수로, 표준시에 따라 지정된 날짜의 분을 나타냅니다.

Examples
--------

### Using `getUTCMinutes()`

다음 예제에서는 현재 시간의 분 부분을 minutes 변수에 할당합니다.

```js
var today = new Date();
var minutes = today.getUTCMinutes();
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getutcminutes |

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

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

See also
--------

* `Date.prototype.getMinutes()`
* `Date.prototype.setUTCMinutes()`


Date.prototype.getDay() - JavaScript

Date.prototype.getDay()
=======================

**`getDay()`** 메서드는 주어진 날짜의 현지 시간 기준 요일을 반환합니다. 0은 일요일을 나타냅니다. 현재의 일을 반환하려면 `Date.prototype.getDate()`를 사용하세요.

시도해보기
-----

구문
--

```js
dateObj.getDay();
```

### 반환 값

현지 시간에 따라, 주어진 날짜의 요일에 해당하는 0 이상 6 이하의 정수. (일요일은 0, 월요일은 1, 화요일은 2, ...)

예제
--

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

1995년 12월 25일은 월요일입니다. 따라서 아래 코드의 두 번째 명령문은 `Xmas95`의 값에 기반하여 `weekday`에 1을 할당합니다.

```js
var Xmas95 = new Date("December 25, 1995 23:15:30");
var weekday = Xmas95.getDay();

console.log(weekday); // 1
```

**참고:** **참고:** 필요하다면, 요일의 이름(`"월요일"` 등)을 `Intl.DateTimeFormat`과 `options` 매개변수를 사용해 얻을 수 있습니다. 이 방법을 사용하면 국제화도 더 쉬워집니다.```js
 var options = { weekday: 'long'};
 console.log(new Intl.DateTimeFormat('en-US', options).format(Xmas95));
 // Monday
 console.log(new Intl.DateTimeFormat('ko-KR', options).format(Xmas95));
 // 월요일

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getday |

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

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

같이 보기
-----

* `Date.prototype.getUTCDate()`
* `Date.prototype.getUTCDay()`
* `Date.prototype.setDate()`


Date.prototype.setUTCDate() - JavaScript

Date.prototype.setUTCDate()
===========================

**`setUTCDate()`** 메서드는 UTC 시간을 기준으로 지정된 `Date` 인스턴스의 날짜를 변경합니다.

표준시 대신 현지 시간을 기준으로 하는 `Date` 인스턴스의 날짜를 변경하려면 `setDate()` 메소드를 사용하세요.

시도해보기
-----

구문
--

```js
setUTCDate(dayValue)
```

### 매개변수

`dayValue`

한 달의 날짜를 나타내는 1에서 31 사이의 정수입니다.

### 반환 값

1970년 1월 1일 00:00:00 UTC와 업데이트 된 날짜 사이의 밀리 초 숫자입니다.

설명
--

`dayValue`가 해당 월의 날짜 값 범위를 벗어나면 `setDate()`는 그에 맞춰 `Date` 객체를 업데이트합니다.

예를 들어 `dayValue`에 0을 입력하면 날짜는 전월 말일로 설정됩니다. `dayValue`에 40을 사용하고 `Date` 객체에 저장된 월이 6월이면 날짜는 10으로 변경되고 월은 7월로 증가합니다.

`dayValue`에 음수를 입력하면 전월 말일부터 역순으로 날짜가 설정됩니다. -1을 사용하면 날짜가 이전 달의 마지막 날 1일로 설정됩니다.

예제
--

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

```js
var theBigDay = new Date();
theBigDay.setUTCDate(20);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.setutcdate |

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

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

같이 보기
-----

* `Date.prototype.getUTCDate()`
* `Date.prototype.setDate()`


Date.prototype[@@toPrimitive] - JavaScript

Date.prototype[@@toPrimitive]
=============================

**`[@@toPrimitive]()`** 메서드는 `Date` 개체를 원시 값으로 변환합니다.

시도해보기
-----

구문
--

```js
Date()[Symbol.toPrimitive](hint)
```

### 반환 값

`Date` 객체로부터 받은 원시 값. 인수에 따라서, 메서드는 문자열이나 숫자를 반환할 수 있습니다.

설명
--

`Date` 객체의 `[@@toPrimitive]()` 메서드는 숫자 형식이나 문자열 형식인 원시 값을 반환합니다.

`hint`가 `string`이나 `default`이면, `[@@toPrimitive]()`는 `toString` 메서드를 호출하려고 합니다. `toString` 속성이 존재하지 않다면, `valueOf` 메서드를 호출하려 할 것이고 `valueOf`이 존재하지 않다면, `[@@toPrimitive]()`는 `TypeError`를 발생시킵니다.

`hint`가 `number`이면, `[@@toPrimitive]()`는 한 번 `valueOf`를 호출하려고 시도합니다, 그리고 실패한다면, `toString`를 호출합니다.

JavaScript는 `[@@toPrimitive]()` 메서드를 원시 값으로 변환하기 위해 호출합니다. 당신은 `[@@toPrimitive]()` 메서드를 호출할 필요가 거의 없습니다. JavaScript가 원시 값이 예상되는 객체를 발견할 때 자동으로 호출합니다.

예제
--

### 원시 날짜 반환

```js
const testDate = new Date(1590757517834);
// "Date Fri May 29 2020 14:05:17 GMT+0100 (British Summer Time)"

testDate[Symbol.toPrimitive]("string");
// Returns "Date Fri May 29 2020 14:05:17 GMT+0100 (British Summer Time)"

testDate[Symbol.toPrimitive]("number");
// Returns "1590757517834"

testDate[Symbol.toPrimitive]("default");
// Returns "Date Fri May 29 2020 14:05:17 GMT+0100 (British Summer Time)"
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype-@@toprimitive |

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

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

같이 보기
-----

* `Symbol.toPrimitive`


Date.prototype.setUTCHours() - JavaScript

Date.prototype.setUTCHours()
============================

**`setUTCHours()`** 메서드는 표준시에 따라 지정된 날짜의 시간을 설정하고 1970년 1월 1일 00:00:00 UTC 이후 업데이트 된 `Date` 인스턴스에 의해 표시되는 시간(밀리 초)을 반환합니다.

시도해보기
-----

구문
--

```js
setUTCHours(hoursValue)
setUTCHours(hoursValue, minutesValue)
setUTCHours(hoursValue, minutesValue, secondsValue)
setUTCHours(hoursValue, minutesValue, secondsValue, msValue)
```

### 매개변수

`hoursValue`

시를 나타내는 0에서 23 사이의 정수입니다.

`minutesValue`

선택적 입력값. 분을 나타내는 0에서 59 사이의 정수입니다.

`secondsValue`

선택적 입력값. 초를 나타내는 0에서 59 사이의 정수입니다. `secondsValue` 매개 변수를 지정하면 minutesValue도 지정해야 합니다.

`msValue`

선택적 입력값. 밀리 초를 나타내는 0에서 999 사이의 숫자입니다. `msValue` 매개 변수를 지정하는 경우 `minutesValue` 및 `secondsValue`도 지정해야 합니다.

### 반환 값

1970년 1월 1일 00:00:00 UTC와 업데이트 된 날짜 사이의 밀리 초 숫자입니다.

설명
--

`minutesValue`, `secondsValue` 및 `msValue` 매개 변수를 지정하지 않으면 `getUTCMinutes()`, `getUTCSeconds()` 및 `getUTCMilliseconds()` 메서드가 사용됩니다.

지정한 매개 변수가 예상 범위를 벗어나면 `setUTCHours()`는 그에 따라 `Date` 객체의 날짜 정보를 업데이트하려고 시도합니다. 예를 들어 `secondsValue`에 100을 사용하면 분은 1 (`minutesValue + 1`)만큼 증가하고 40은 초 단위로 사용됩니다.

예제
--

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

```js
var theBigDay = new Date();
theBigDay.setUTCHours(8);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.setutchours |

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

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

같이 보기
-----

* `Date.prototype.getUTCHours()`
* `Date.prototype.setHours()`


Date.prototype.setUTCSeconds() - JavaScript

Date.prototype.setUTCSeconds()
==============================

**setUTCSeconds()** 메서드는 표준시에 따라 지정된 날짜의 초를 설정합니다.

시도해보기
-----

구문
--

```js
setUTCSeconds(secondsValue)
setUTCSeconds(secondsValue, msValue)
```

### 매개변수

`secondsValue`

초를 나타내는 0에서 59 사이의 정수입니다.

`msValue`

선택적 입력 값. 밀리 초를 나타내는 0에서 999 사이의 숫자입니다.

### 반환값

1970년 1월 1일 00:00:00 UTC와 업데이트 된 날짜 사이의 밀리 초 숫자입니다.

설명
--

`msValue` 매개 변수를 지정하지 않으면 `getUTCMilliseconds()` 메서드에서 반환 된 값이 사용됩니다.

지정한 매개 변수가 예상 범위를 벗어나면 `setUTCSeconds()`가 그에 따라 `Date` 객체의 날짜 정보를 업데이트하려고 시도합니다. 예를 들어, `secondsValue`에 100을 사용하면 `Date` 객체에 저장된 분이 1씩 증가하고 40초 동안 사용됩니다.

예제
--

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

```js
var theBigDay = new Date();
theBigDay.setUTCSeconds(20);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.setutcseconds |

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

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

같이 보기
-----

* `Date.prototype.getUTCSeconds()`
* `Date.prototype.setSeconds()`


Date.prototype.getMonth() - JavaScript

Date.prototype.getMonth()
=========================

**`getMonth()`** 메서드는 `Date` 객체의 월 값을 현지 시간에 맞춰 반환합니다. 월은 0부터 시작합니다.

시도해보기
-----

구문
--

```js
dateObj.getMonth();
```

### 반환 값

현지 시간 기준 월을 나타내는 0에서 11 사이의 정수. 0은 1월, 1은 2월... 을 나타냅니다.

예제
--

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

다음 예제는 `Date` 객체 `Xmas95`의 값을 사용해 변수 `month`에 11을 할당합니다.

```js
var Xmas95 = new Date("December 25, 1995 23:15:30");
var month = Xmas95.getMonth();

console.log(month); // 11
```

**참고:** **참고:** 필요한 경우 `Intl.DateTimeFormat()`과 `options` 매개변수를 사용해 해당하는 달의 이름(`"January"` 등)을 가져올 수 있습니다. 이 방법을 사용하면 국제화도 보다 편리합니다.

```js
var options = { month: "long" };
console.log(new Intl.DateTimeFormat("ko-KR", options).format(Xmas95));
// 12월
console.log(new Intl.DateTimeFormat("en-US", options).format(Xmas95));
// December
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getmonth |

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

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

같이 보기
-----

* `Date.prototype.getUTCMonth()`
* `Date.prototype.setMonth()`


Date.prototype.setMilliseconds() - JavaScript

Date.prototype.setMilliseconds()
================================

setMilliseconds () 메서드는 현지 시간에 따라 지정된 날짜의 밀리 초를 설정합니다.

Syntax
------

```js
dateObj.setMilliseconds(millisecondsValue);
```

### Parameters

`millisecondsValue`

밀리 초를 나타내는 0에서 999 사이의 숫자입니다.

### Return value

1970 년 1 월 1 일 00:00:00 UTC와 업데이트 된 날짜 사이의 밀리 초 숫자입니다.

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

예상되는 범위를 벗어난 숫자를 지정하면 `Date` 객체의 날짜 정보가 그에 따라 업데이트됩니다. 예를 들어, 1005를 지정하면 초 수가 1 씩 증가하고 5는 밀리 초 단위로 사용됩니다.

Examples
--------

### Using `setMilliseconds()`

```js
var theBigDay = new Date();
theBigDay.setMilliseconds(100);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.setmilliseconds |

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

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

See also
--------

* `Date.prototype.getMilliseconds()`
* `Date.prototype.setUTCMilliseconds()`


Date.now() - JavaScript

Date.now()
==========

**`Date.now()`** 메소드는 UTC 기준으로 1970년 1월 1일 0시 0분 0초부터 현재까지 경과된 밀리초를 반환합니다.

시도해보기
-----

문법
--

```js
var timeInMs = Date.now();
```

### 반환 값

1970년 1월 1일 0시 0분 0초부터 현재까지 경과된 밀리초를 나타내는 **숫자**입니다.

설명
--

now() 메소드는 1970년 1월 1일 0시 0분 0초부터 현재까지 경과된 밀리초를 `Number` 형으로 반환합니다.

now()는 `Date`의 정적 메소드이기 때문에, 항상 `Date.now()`처럼 사용하셔야 합니다.

Polyfill
--------

이 메소드는 ECMA-262 5판에서 표준화되었습니다. 아직 이 메소드를 지원하도록 갱신되지 않은 엔진들은 이 메소드의 미지원에 대한 차선책으로 다음 코드를 활용하실 수 있습니다.

```js
if (!Date.now) {
  Date.now = function now() {
    return new Date().getTime();
  };
}
```

예시
--

### 감소된 시간 정밀도

 타이밍 공격 및 핑거 프린팅에 대한 보호를 제공하기 위해 `Date.now ()`의 정밀도는 브라우저 설정에 따라 반올림될 수 있습니다.
 Firefox에서는 `privacy.reduceTimerPrecision` 기본 설정이 기본적으로 활성화되어 있으며 Firefox 59에서는 기본값이 20µs입니다. Firefox 60에서는 2ms가 됩니다.

```js
// Firefox 60에서 시간 정밀도 (2ms) 감소
Date.now();
// 1519211809934
// 1519211810362
// 1519211811670
// ...

// `privacy.resistFingerprinting`을 활성화하여 시간 정밀도 감소
Date.now();
// 1519129853500
// 1519129858900
// 1519129864400
// ...
```

Firefox에서는 `privacy.resistFingerprinting`을 활성화할 수도 있습니다. 정밀도는 100ms 또는 `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` 중 더 큰 값이 됩니다.

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.now |

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

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

참고하세요
-----

* `Performance.now()` (en-US) — provides timestamps with sub-millisecond resolution for use in measuring web page performance
* `console.time()` / `console.timeEnd()`


Date.prototype.setMinutes() - JavaScript

Date.prototype.setMinutes()
===========================

setMinutes () 메서드는 현지 시간에 따라 지정된 날짜의 분을 설정합니다.

Syntax
------

```js
    dateObj.setMinutes(minutesValue[, secondsValue[, msValue]])
```

### Versions prior to JavaScript 1.3

```js
dateObj.setMinutes(minutesValue);
```

### Parameters

`minutesValue`

분을 나타내는 0에서 59 사이의 정수입니다.

`secondsValue`

선택 과목. 초를 나타내는 0에서 59 사이의 정수입니다. secondsValue 매개 변수를 지정하면 minutesValue도 지정해야합니다.

`msValue`

선택 과목. 밀리 초를 나타내는 0에서 999 사이의 숫자입니다. msValue 매개 변수를 지정하는 경우 minutesValue 및 secondsValue도 지정해야합니다.

### Return value

1970 년 1 월 1 일 00:00:00 UTC와 업데이트 된 날짜 사이의 밀리 초 숫자입니다.

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

secondsValue 및 msValue 매개 변수를 지정하지 않으면 `getSeconds()` 및 `getMilliseconds()`  메소드가 사용됩니다.

지정한 매개 변수가 예상 범위를 벗어나면 setMinutes ()는 그에 따라 `Date` 객체의 날짜 정보를 업데이트하려고 시도합니다. 예를 들어 secondsValue에 100을 사용하면 분은 1 (minutesValue + 1)만큼 증가하고 40은 초 단위로 사용됩니다.

Examples
--------

### Using `setMinutes()`

```js
var theBigDay = new Date();
theBigDay.setMinutes(45);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.setminutes |

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

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

See also
--------

* `Date.prototype.getMinutes()`
* `Date.prototype.setUTCMinutes()`


Date.prototype.getUTCMilliseconds() - JavaScript

Date.prototype.getUTCMilliseconds()
===================================

**getUTCMilliseconds()** 메서드는 표준시에 따라 지정된 날짜의 밀리 초를 반환합니다.

Syntax
------

```js
dateObj.getUTCMilliseconds();
```

### Return value

0부터 999까지의 정수로, 표준시에 따라 지정된 날짜의 밀리 초를 나타냅니다.

Examples
--------

### Using `getUTCMilliseconds()`

다음 예제에서는 현재 시간의 밀리 초 부분을 밀리 초 변수에 할당합니다.

```js
var today = new Date();
var milliseconds = today.getUTCMilliseconds();
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getutcmilliseconds |

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

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

See also
--------

* `Date.prototype.getMilliseconds()`
* `Date.prototype.setUTCMilliseconds()`


Date.prototype.getFullYear() - JavaScript

Date.prototype.getFullYear()
============================

**`getFullYear()`** 메서드는 주어진 날짜의 현지 시간 기준 연도를 반환합니다.

`getYear()` (en-US) 메서드 대신 이 메서드를 사용하세요.

시도해보기
-----

구문
--

```js
dateObj.getFullYear();
```

### 반환 값

현지 시간에 따라, 주어진 날짜의 연도에 해당하는 숫자.

설명
--

`getFullYear()`가 반환하는 값은 절댓값입니다. `getFullYear()`는 1000년과 9999년 사이의, 1995년과 같은 날짜에 대해서는 네 자리 숫자를 반환합니다. 이 메서드를 사용해야 2000년 이후의 날짜에 대해서도 호환을 유지할 수 있습니다.

예제
--

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

다음 예제에서는 현재 연도의 네 자릿값을 변수 `year`에 할당합니다.

```js
var today = new Date();
var year = today.getFullYear();
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getfullyear |

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

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

같이 보기
-----

* `Date.prototype.getUTCFullYear()`
* `Date.prototype.setFullYear()`
* `Date.prototype.getYear()` (en-US)


Date.prototype.setUTCMonth() - JavaScript

Date.prototype.setUTCMonth()
============================

**`setUTCMonth()`** 메서드는 표준시에 따라 지정된 날짜의 월을 설정합니다.

시도해보기
-----

문법
--

```js
setUTCMonth(monthValue)
setUTCMonth(monthValue, dayValue)
```

### 매개변수

`monthValue`

1월에서 12월까지의 월을 나타내는 0에서 11 사이의 정수입니다.

`dayValue`

선택적 입력 값. 한 달의 날짜를 나타내는 1에서 31 사이의 정수입니다.

### 반환값

1970년 1월 1일 00:00:00 UTC와 업데이트 된 날짜 사이의 밀리 초 숫자입니다.

설명
--

`dayValue` 매개 변수를 명시하지 않으면 `getUTCDate()` 메소드에서 반환된 값이 사용됩니다.

지정한 매개 변수가 예상 범위를 벗어난 경우 `setUTCMonth()`는 그에 따라 `Date` 객체의 날짜 정보를 업데이트하려고 시도합니다. 예를 들어 `monthValue`에 15를 사용하면 연도가 1씩 증가하고 3은 월에 사용됩니다.

예제
--

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

```js
var theBigDay = new Date();
theBigDay.setUTCMonth(11);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.setutcmonth |

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

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

같이 보기
-----

* `Date.prototype.getUTCMonth()`
* `Date.prototype.setMonth()`


Date.prototype.setUTCFullYear() - JavaScript

Date.prototype.setUTCFullYear()
===============================

**`setUTCFullYear()`** 메서드는 지정된 날짜의 전체 연도를 표준시에 따라 설정합니다.

시도해보기
-----

구문
--

```js
setUTCFullYear(yearValue)
setUTCFullYear(yearValue, monthValue)
setUTCFullYear(yearValue, monthValue, dayValue)
```

### 매개변수

`yearValue`

연도의 숫자 값을 지정하는 정수입니다 (예 : 1995).

`monthValue`

선택적 입력값. 1월에서 12월까지의 월을 나타내는 0에서 11 사이의 정수입니다.

`dayValue`

선택적 입력값. 한 달의 날짜를 나타내는 1부터 31사이의 정수입니다. `dayValue` 매개 변수를 지정하는 경우 `monthValue`도 지정해야합니다.

### 반환값

1970년 1월 1일 00:00:00 UTC와 업데이트 된 날짜 사이의 밀리 초 숫자입니다.

설명
--

`monthValue` 및 `dayValue` 매개 변수를 지정하지 않으면 `getUTCMonth()` 및 `getUTCDate()` 메소드가 사용됩니다.

지정한 매개 변수가 예상 범위를 벗어난 경우 `setUTCFullYear()`는 다른 매개 변수와 `Date` 객체의 날짜 정보를 그에 따라 업데이트하려고 시도합니다. 예를 들어, `monthValue`에 15를 지정하면 연도가 1(`yearValue + 1`)만큼 증가하고 3은 해당 월에 사용됩니다.

예제
--

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

```js
var theBigDay = new Date();
theBigDay.setUTCFullYear(1997);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.setutcfullyear |

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

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

같이 보기
-----

* `Date.prototype.getUTCFullYear()`
* `Date.prototype.setFullYear()`


Date.prototype.valueOf() - JavaScript

Date.prototype.valueOf()
========================

**`valueOf()`** 함수는 `Date` 객체의 원시값을 반환합니다.

시도해보기
-----

Syntax
------

```js
dateObj.valueOf();
```

### Return value

반환되는 milliseconds 값은 1 January 1970 00:00:00 UTC 와 주어진 일시 사이의 값입니다.

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

`valueOf()` 함수는 01 January, 1970 UTC 이후의 milliseconds 단위의 자연수 타입인 `Date` 객체의 원시값을 반환합니다.

이 함수는 `Date.prototype.getTime()` 함수와 동일한 결과값을 반환합니다.

이 함수는 사용자 코드에 명시된 것이 아닌, JavaScript 자체에 포함되어 있습니다.

Examples
--------

### Using `valueOf()`

```js
var x = new Date(56, 6, 17);
var myVar = x.valueOf(); // myVar에 -424713600000를 할당합니다.
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.valueof |

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

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

See also
--------

* `Object.prototype.valueOf()`
* `Date.prototype.getTime()`


Date.prototype.getHours() - JavaScript

Date.prototype.getHours()
=========================

**`getHours()`** 메서드는 주어진 날짜의 현지 시간 기준 시를 반환합니다.

시도해보기
-----

구문
--

```js
dateObj.getHours();
```

### 반환 값

주어진 날짜의 현지 시간 기준 시를 나타내는 0에서 23 사이의 정수.

예제
--

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

아래의 두 번째 명령문은 `Date` 객체 `Xmas95` 날짜의 시를 `hours` 변수에 할당합니다.

```js
var Xmas95 = new Date("December 25, 1995 23:15:30");
var hours = Xmas95.getHours();

console.log(hours); // 23
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.gethours |

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

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

같이 보기
-----

* `Date.prototype.getUTCHours()`
* `Date.prototype.setHours()`


Date.prototype.getMilliseconds() - JavaScript

Date.prototype.getMilliseconds()
================================

**`getMilliseconds()`** 메서드는 `Date` 인스턴스의 밀리초를 현지 시간 기준으로 반환합니다.

시도해보기
-----

구문
--

```js
dateObj.getMilliseconds();
```

### 반환 값

주어진 날짜의 현지 시간 기준 밀리초를 나타내는 0에서 999 사이의 정수.

예제
--

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

다음 예제에서는 현재 시간의 밀리초를 변수 `milliseconds`에 할당합니다.

```js
var today = new Date();
var milliseconds = today.getMilliseconds();
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getmilliseconds |

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

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

같이 보기
-----

* `Date.prototype.getUTCMilliseconds()`
* `Date.prototype.setMilliseconds()`


Date.prototype.getDate() - JavaScript

Date.prototype.getDate()
========================

**`getDate()`** 메서드는 주어진 날짜의 현지 시간 기준 일을 반환합니다.

시도해보기
-----

구문
--

```js
dateObj.getDate();
```

### 반환 값

현지 시간에 따라, 주어진 날짜의 일에 해당하는 1 이상 31 이하의 정수.

예제
--

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

아래 코드의 두 번째 명령문은 `Xmas95`의 값에 기반하여 `day`에 2를 할당합니다.

```js
var Xmas95 = new Date("December 25, 1995 23:15:30");
var day = Xmas95.getDate();

console.log(day); // 25
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getdate |

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

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

같이 보기
-----

* `Date.prototype.getUTCDate()`
* `Date.prototype.getUTCDay()`
* `Date.prototype.setDate()`


Date.prototype.toISOString() - JavaScript

Date.prototype.toISOString()
============================

**`toISOString()`** 메서드는 단순화한 확장 ISO 형식(ISO 8601)의 문자열을 반환합니다.
 반환값은 언제나 24글자 또는 27글자(각각 **`YYYY-MM-DDTHH:mm:ss.sssZ`** 또는
 **`±YYYYYY-MM-DDTHH:mm:ss.sssZ`**)입니다.시간대는 언제나 UTC이며 접미어 `Z`로 표현합니다.

시도해보기
-----

구문
--

```js
toISOString()
```

### 반환 값

 주어진 날짜를 국제표준시 기준 ISO 8601 형식으로 표현한 문자열.
 `Date.parse()`에서 인식해야 하는 형식과 동일합니다.

예제
--

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

```js
const today = new Date("05 October 2011 14:48 UTC");

console.log(today.toISOString()); // Returns 2011-10-05T14:48:00.000Z
```

위 예제는 비표준 문자열의 분석을 포함하고 있어 Mozilla 외의 브라우저에서는 올바르게 작동하지 않을 수 있습니다.

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.toisostring |

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

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

같이 보기
-----

* `Date.prototype.toLocaleDateString()` (en-US)
* `Date.prototype.toTimeString()` (en-US)
* `Date.prototype.toUTCString()`


Date.UTC() - JavaScript

Date.UTC()
==========

**`Date.UTC()`** 메서드는 `Date` 생성자와 비슷한 매개변수를 받지만, 모두 UTC로 취급합니다. 반환 값은 1970년 1월 1일 00:00:00 UTC부터 매개변수가 나타내는 시간의 차이를 밀리초로 나타낸 수입니다.

시도해보기
-----

구문
--

**ECMAScript 2017 이상:**

```js
    Date.UTC(year[, month[, day[, hour[, minute[, second[, millisecond]]]]])
```

**ECMAScript 2016 이하:** (`month` 필수)

```js
    Date.UTC(year, month[, day[, hour[, minute[, second[, millisecond]]]]])
```

### 매개변수

`year`

네 자리 연도.

`month`

월을 나타내는 0(1월)에서 11(12월) 사이의 정수. ECMAScript 2016까지는 필수 매개변수였으나, ECMA2017부터는 선택사항입니다.

`day` Optional

일을 나타내는 1에서 31 사이의 정수. 기본값은 1입니다.

`hour` Optional

시를 나타내는 0에서 23 사이의 정수. 기본값은 0입니다.

`minute` Optional

분을 나타내는 0에서 59 사이의 정수. 기본값은 0입니다.

`second` Optional

초를 나타내는 0에서 59 사이의 정수. 기본값은 0입니다.

`millisecond` Optional

밀리초를 나타내는 0에서 999 사이의 정수. 기본값은 0입니다.

### 반환 값

주어진 날짜와 1970년 1월 1일 00:00:00 UTC의 차이를 밀리초로 나타낸 숫자.

설명
--

`Date.UTC()`는 날짜 및 시간을 받고, 1970년 1월 1일 00:00:00 UTC와의 차이를 밀리초 수로 나타내 반환합니다.

0에서 99 사이의 연도는 20세기`(1900 + year)`로 취급합니다. 즉 95를 입력할 경우 1995로 취급합니다.

`Date.UTC()` 메서드는 `Date` 생성자와 다른 점이 두 가지 있습니다.

* `Date.UTC()`는 현지 시간 대신 국제 표준시(UTC)를 사용합니다.
* `Date.UTC()`는 `Date` 객체를 만드는 대신 시간 값을 숫자로 반환합니다.

주어진 매개변수가 통상적인 범위를 벗어나면 `Date.UTC()` 메서드는 다른 매개변수 값을 조절해 계산합니다. 예를 들어, 월 값으로 15를 사용하면 연도가 1 증가(`year + 1`)하고, 월 계산에는 3을 대신 사용합니다.

`Date.UTC()`는 `Date`의 정적 메서드이므로, 사용자가 생성한 `Date` 인스턴스에서 호출하지 않고 `Date.UTC()` 형태로 사용합니다.

예제
--

### `Date.UTC()` 사용하기

다음 예제는 현지 시간 대신 UTC를 사용하여 `Date` 객체를 생성합니다.

```js
var utcDate = new Date(Date.UTC(96, 11, 1, 0, 0, 0));
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.utc |

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

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

호환성 참고사항
--------

### 매개변수를 두 개 미만 제공하는 경우

Date.UTC()가 두 개 미만의 매개변수를 받은 경우, ECMAScript 2017은 `NaN`을 반환할 것을 요구합니다. 이를 지원하지 않던 엔진은 업데이트됐습니다. (Firefox bug 1050755, ecma-262 #642를 참고하세요)

```js
Date.UTC();
Date.UTC(1);

// Safari: NaN
// Chrome/Opera/V8: NaN

// Firefox <54: non-NaN
// Firefox 54+: NaN

// IE: non-NaN
// Edge: NaN
```

같이 보기
-----

* `Date.parse()`
* `Date`


Date.prototype.getUTCDate() - JavaScript

Date.prototype.getUTCDate()
===========================

**getUTCDate()** 메서드는 표준시에 따라 지정된 날짜에 해당 월의 요일 (날짜)을 반환합니다.

Syntax
------

```js
dateObj.getUTCDate();
```

### Return value

보편적 인 시간에 따라 지정된 날짜의 달의 날짜를 나타내는 1에서 31 사이의 정수입니다.

Examples
--------

### Using `getUTCDate()`

다음 예제에서는 현재 날짜의 일 부분을 day 변수에 할당합니다.

```js
var today = new Date();
var day = today.getUTCDate();
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getutcdate |

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

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

See also
--------

* `Date.prototype.getDate()`
* `Date.prototype.getUTCDay()`
* `Date.prototype.setUTCDate()`


Date.prototype.toLocaleString() - JavaScript

Date.prototype.toLocaleString()
===============================

**`toLocaleString()`** 메소드는 날짜를 언어별로 구분하여 나타내는 문자열을 반환합니다. `Intl.DateTimeFormat` API 를 지원하는 구현에서 이 메소드는 단순히 `Intl.DateTimeFormat`를 호출합니다.

시도해보기
-----

문법
--

```js
toLocaleString()
toLocaleString(locales)
toLocaleString(locales, options)
```

### 매개변수

`locales`, `options` 인수는 함수의 동작을 사용자 정의하고 응용 프로그램에서 형식 규칙을 사용할 언어를 지정할 수 있도록 합니다.

`Intl.DateTimeFormat` API를 지원하는 구현에서, 이 파라미터들은 정확하게 `Intl.DateTimeFormat()` 생성자 파라미터와 일치합니다. `Intl.DateTimeFormat` 를 지원하지 않는 구현은 두 매개변수를 무시하도록 요청되어, 사용된 로케일과 반환된 문자열 형식이 완전히 구현에 종속됩니다.

`locales` Optional

BCP 47 언어 태그 문자열 또는 이러한 문자열의 배열입니다. `Intl.DateTimeFormat()` 생성자의 매개변수 `locales`와 일치합니다.

`Intl.DateTimeFormat` 을 지원하지 않는 구현에서는 이 매개변수는 무시되고, 보통 호스트 로케일이 사용됩니다.

`options` Optional

출력 형식을 조정하는 객체입니다. `Intl.DateTimeFormat()` 생성자 매개변수 `options` 와 일치합니다. 만약 `weekday`, `year`, `month`, `day`, `dayPeriod`, `hour`, `minute`, `second`, 그리고 `fractionalSecondDigits` 가 전부 undefined이면, `year`, `month`, `day`, `hour`, `minute`, `second` 가`"numeric"` 으로 설정됩니다.

`Intl.DateTimeFormat` 를 지원하지 않는 구현에서 이 매개변수는 무시됩니다.

이 매개변수에 대한 자세한 설명과 사용법을 알고싶으면 다음을 참조하십시오. `Intl.DateTimeFormat()` constructor

### 반환 값

언어별 표현 형식을 따른 날짜 문자열

`Intl.DateTimeFormat`를 지원하는 구현에서 안에서 `new Intl.DateTimeFormat(locales, options).format(date)` 와 동일합니다.

예제
--

### toLocaleString() 사용

로케일을 지정하지않고 기본으로 사용하는 경우, 기본 로케일과 옵션으로 포맷된 문자열이 반환됩니다.

```js
const date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));

// 인수가 없는 toLocaleString() 은 구현, 기본 로케일, 기본 타임존에 따라 달라집니다
console.log(date.toLocaleString());
// → "12/11/2012, 7:00:00 PM" en-Us 로케일 및 America/Los\_Angeles 타임존에서 실행했을 때
```

### 로케일 및 옵션 인수에 대한 지원 확인

아직 `locales`, `options` 인수는 일부 브라우저에서 지원하지 않습니다. 구현에서 해당 인수를 지원하는지 확인하려면 잘못된 언어 태그가 `RangeError` 예외로 거부되는 요구사항을 사용할 수 있습니다.

```js
function toLocaleStringSupportsLocales() {
  try {
    new Date().toLocaleString("i");
  } catch (e) {
    return e.name === "RangeError";
  }
  return false;
}
```

### locales 사용

이 예는 지역화된 날짜 및 시간 형식의 일부 변형을 보여줍니다. 당신의 어플리케이션의 사용자 인터페이스가 사용하는 언어(그리고 일부 대체 언어)의 형식을 얻기 위해서, 반드시 `locales` 인수를 사용하여 해당 언어를 지정해야합니다.

```js
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// 아래의 형식은 로케일의 로컬 타임존을 가정한다
// America/Los\_Angeles for the US

// 미국 영어는 달-일-년 순서와 AM/PM이 있는 12시간을 사용합니다
console.log(date.toLocaleString("en-US"));
// → "12/19/2012, 7:00:00 PM"

// 영국 영어는 일-달-년 순서와 AM/PM이 없는 24시간을 사용합니다
console.log(date.toLocaleString("en-GB"));
// → "20/12/2012 03:00:00"

// 한국어는 년-월-일 순서와 AM/PM이 있는 12시간을 사용합니다
console.log(date.toLocaleString("ko-KR"));
// → "2012. 12. 20. 오후 12:00:00"

// 아랍어를 사용하는 대부분의 아랍국가는 동부 아라비안 숫자를 사용합니다
console.log(date.toLocaleString("ar-EG"));
// → "٢٠/١٢/٢٠١٢ ٥:٠٠:٠٠ ص"

// 일본어의 경우, 어플리케이션이 일본 달력을 사용하고 싶을 수 있습니다
// 2012년의 경우 Heisei 24년 이었습니다
console.log(date.toLocaleString("ja-JP-u-ca-japanese"));
// → "24/12/20 12:00:00"

// 발리어와 같이 지원되지 않을 수 있는 언어를 요청할 때, 대체 언어를 포함합니다. (이 경우에는 인도네시아어)
console.log(date.toLocaleString(["ban", "id"]));
// → "20/12/2012 11.00.00"
```

### options 사용

`toLocaleString()` 가 제공하는 결과는 `options` 인수를 사용하여 사용자 정의할 수 있습니다.

```js
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// Request a weekday along with a long date
const options = {
  weekday: "long",
  year: "numeric",
  month: "long",
  day: "numeric",
};

console.log(date.toLocaleString("de-DE", options));
// → "Donnerstag, 20. Dezember 2012"

// 어플리케이션은 UTC를 사용할 수 있고 그것을 보이게 할 수 있습니다.
options.timeZone = "UTC";
options.timeZoneName = "short";

console.log(date.toLocaleString("en-US", options));
// → "Thursday, December 20, 2012, GMT"

// en-US도 24시간 사용이 가능합니다
console.log(date.toLocaleString("en-US", { hour12: false }));
// → "12/19/2012, 19:00:00"
```

### 포맷된 날짜 값을 정적 값과 비교하지 않기

대부분의 경우, `toLocaleString()` 가 반환하는 형식은 일관됩니다. 하지만 이것은 미래에 달라질 수 있고, 모든 언어에 대해 보장되지 않습니다; 출력 변형은 설계에 따라 허용되며 사양에 따라 허용됩니다.

특히 IE 및 Edge 브라우저는 다른 텍스트와 연결될때 출력 텍스트가 자연스럽게 연결되도록, 양방향 제어 문자를 삽입합니다.

이러한 이유로, 당신은 정적 값과 `toLocaleString()` 의 결과 값을 비교할 수 있다고 기대할 수 없습니다.

```js
"1/1/2019, 01:00:00" ===
  new Date("2019-01-01T01:00:00Z").toLocaleString("en-US");
// Firefox나 다른 기타 브라우저에서 true 입니다
// IE나 Edge에서 false 입니다
```

>
>
> **Note:** See also this
>  StackOverflow thread
>  for more details and examples.
>
>
>
>

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.tolocalestring |
| ECMAScript Internationalization API Specification # sup-date.prototype.tolocalestring |

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

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

See also
--------

* `Intl.DateTimeFormat`
* `Date.prototype.toLocaleDateString()` (en-US)
* `Date.prototype.toLocaleTimeString()` (en-US)
* `Date.prototype.toString()`


Date.prototype.setUTCMilliseconds() - JavaScript

Date.prototype.setUTCMilliseconds()
===================================

**`setUTCMilliseconds()`** 메서드는 표준시에 따라 지정된 날짜의 밀리 초를 설정합니다.

시도해보기
-----

구문
--

```js
setUTCMilliseconds(millisecondsValue)
```

### 매개변수

`millisecondsValue`

밀리 초를 나타내는 0에서 999 사이의 숫자입니다.

### 반환 값

1970년 1월 1일 00:00:00 UTC와 업데이트 된 날짜 사이의 밀리 초 숫자입니다.

설명
--

지정한 매개 변수가 예상 범위를 벗어난 경우 `setUTCMilliseconds()`는 그에 따라 `Date` 객체의 날짜 정보를 업데이트하려고 시도합니다. 예를 들어 `millisecondsValue`에 1100을 사용하면 `Date` 객체에 저장된 초가 1씩 증가하고 100은 밀리 초 단위로 사용됩니다.

예제
--

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

```js
var theBigDay = new Date();
theBigDay.setUTCMilliseconds(500);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.setutcmilliseconds |

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

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

같이 보기
-----

* `Date.prototype.getUTCMilliseconds()`
* `Date.prototype.setMilliseconds()`


Date.prototype.toUTCString() - JavaScript

Date.prototype.toUTCString()
============================

**`toUTCString()`** 메서드는 날짜를 문자열로 변환하여 UTC 시단대로 해석합니다. `toGMTString()`은 이 메서드의 별칭입니다.

rfc7231에 기반하고 ECMA-262 toUTCString에 따라 음수 값을 가질 수 있습니다.

시도해보기
-----

구문
--

```js
toUTCString()
```

### 반환 값

UTC 시간대를 사용하여 지정된 날짜를 나타내는 문자열입니다.

설명
--

`toUTCString()`에 의하여 반환된 값은 `Www, dd Mmm yyyy hh:mm:ss GMT` 형식의 문자열입니다, 아래와 같습니다.

| 문자열 형식 | 설명 |
| --- | --- |
| `Www` | 요일, 세 글자로 (예를 들어 `Sun`, `Mon`) |
| `dd` | 월일, 필요한 경우 선두가 0인 두 자리 숫자로 표시 |
| `Mmm` | 달, 세 글자로 (예를 들어 `Jan`, `Feb`) |
| `yyyy` | 연도, 필요한 경우 선행 0이 포함된 네 자리 이상의 숫자로 표시 |
| `hh` | 시간, 필요한 경우 선행 0인 두 자리 숫자로 표시 |
| `mm` | 분, 필요한 경우 선행 0인 두 자리 숫자로 표시 |
| `ss` | 초, 필요한 경우 선행 0인 두 자리 숫자로 표시 |

### 별칭

JavaScript의 `Date` API는 Java의 `java.util.Date` 라이브러리의 영감을 받았습니다 (1997년 Java 1.1 이후로 사실상 유산이 될지라도). 특히 JavaScript의 날짜는 항상 UTC 시간에 의해 작동하는 반면, Greenwich Mean Time는 Coordinated Universal Time와 동일하지 않기 때문에, Java의 `Date` 클래스에는 `toGMTString`이라는 형편없는 이름의 메서드가 있었습니다. 웹 호환성의 이유로 `toGMTSring`은 `toUTCString`의 별칭으로 남아 있으며, 이들은 정확히 동일한 함수 개체를 참조합니다. 아래와 같습니다.

```js
Date.prototype.toGMTString.name === "toUTCString";
```

예제
--

### toUTCString() 사용

```js
const today = new Date("Wed, 14 Jun 2017 00:00:00 PDT");
const UTCstring = today.toUTCString(); // Wed, 14 Jun 2017 07:00:00 GMT
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.toutcstring |

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

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

같이 보기
-----

* `Date.prototype.toLocaleString()`
* `Date.prototype.toDateString()` (en-US)
* `Date.prototype.toISOString()`


Date.prototype.toJSON() - JavaScript

Date.prototype.toJSON()
=======================

**`toJSON()`** 메서드는 `Date` 객체의 문자열 표현을 반환합니다.

시도해보기
-----

구문
--

```js
dateObj.toJSON();
```

### 반환 값

주어진 날짜의 문자열 표현.

설명
--

`Date` 인스턴스는 시간의 특정 지점을 가리킵니다. `toJSON()`을 호출하면 `toISOString()` 사용해 그 인스턴스가 가리키는 시간의 문자열 표현을 반환합니다. `toJSON()`은 `Date` 값을 JSON으로 직렬화할 때 유용하게 사용할 수 있도록 만들어졌습니다.

예제
--

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

```js
const jsonDate = new Date().toJSON();
const backToDate = new Date(jsonDate);

console.log(jsonDate); //2015-10-26T07:46:36.611Z
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.tojson |

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

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

같이 보기
-----

* `Date.prototype.toLocaleDateString()` (en-US)
* `Date.prototype.toTimeString()` (en-US)
* `Date.prototype.toUTCString()`


AggregateError() constructor - JavaScript

AggregateError() constructor
============================

**`AggregateError()`** 생성자는 `AggregateError` 객체를 생성합니다.

구문
--

```js
new AggregateError(errors)
new AggregateError(errors, message)
new AggregateError(errors, message, options)

AggregateError(errors)
AggregateError(errors, message)
AggregateError(errors, message, options)
```

**참고:** `AggregateError()`는 `new`와 함께 혹은 없이도 호출할 수 있습니다. 두 방법 모두 `AggregateError` 인스턴스를 생성합니다.

### 매개변수

`errors`

순회 가능한 오류들. 실제 `Error` 객체가 아닐 수 있습니다.

`message` Optional

사람이 읽을 수 있는 `AggregateError`의 선택적 설명입니다.

`options` Optional

다음 속성을 가진 객체입니다.

`cause` Optional

 오류의 특정 원인을 명시하는 속성입니다.
 보다 구체적이거나 유용한 오류 메시지로 오류를 잡아서 다시 오류를 발생시킬 때 이 속성을 사용하여 원래 오류를 전달할 수 있습니다.

예제
--

### AggregateError 생성하기

```js
try {
  throw new AggregateError([new Error("some error")], "Hello");
} catch (e) {
  console.log(e instanceof AggregateError); // true
  console.log(e.message); // "Hello"
  console.log(e.name); // "AggregateError"
  console.log(e.errors); // [ Error: "some error" ]
}
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-aggregate-error-constructor |

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

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

같이 보기
-----

* Polyfill of `AggregateError` in `core-js`
* `Promise.any` (en-US)


AggregateError: errors - JavaScript

AggregateError: errors
======================

`AggregateError` 인스턴스의 **`errors`** 데이터 속성에는 집계된 오류를
 나타내는 배열이 포함되어 있습니다.

값
-

`Array`이며, `AggregateError()` 생성자의 첫 번째 인자로 전달된 반복과 동일한 순서의 값을 가지고 있습니다.

| Property attributes of `AggregateError: errors` |
| --- |
| Writable | 가능 |
| Enumerable | 불가능 |
| Configurable | 가능 |

예제
--

### errors 사용하기

```js
try {
  throw new AggregateError(
    // An iterable of errors
    new Set([new Error("some error"), new Error("another error")]),
    "Multiple errors thrown",
  );
} catch (err) {
  console.log(err.errors);
  // [
  // Error: some error,
  // Error: another error
  // ]
}
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-aggregate-error |

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

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

같이 보기
-----

* Control flow and error handling
* `AggregateError`
* `Error`: `cause`


Set.prototype.size - JavaScript

Set.prototype.size
==================

**`size`** 접근자 속성은 `Set` (en-US) 객체의 원소 수를 반환합니다.

시도해보기
-----

설명
--

`size`의 값은 `Set` 객체가 가진 원소의 수를 나타내는 정수입니다. `size` 값의 설정자는 `undefined`입니다. 즉 값을 직접 바꿀 수는 없습니다.

예제
--

### `size` 사용하기

```js
var mySet = new Set();
mySet.add(1);
mySet.add(5);
mySet.add("some text");

mySet.size; // 3
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-set.prototype.size |

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

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

같이 보기
-----

* `Set` (en-US)


Set.prototype.clear() - JavaScript

Set.prototype.clear()
=====================

**`clear()`** 메서드는 `Set` 객체를 비웁니다.

시도해보기
-----

구문
--

```js
mySet.clear();
```

예제
--

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

```js
var mySet = new Set();
mySet.add(1);
mySet.add("foo");

mySet.size; // 2
mySet.has("foo"); // true

mySet.clear();

mySet.size; // 0
mySet.has("bar"); // false
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-set.prototype.clear |

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

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

같이 보기
-----

* `Set` (en-US)
* `Set.prototype.delete()`


Set.prototype.keys() - JavaScript

Set.prototype.keys()
====================

**`keys()`** 메서드는 `values()` 메서드의 별칭입니다.

구문
--

```js
keys()
```

### 반환 값

주어진 `Set`의 각 요소에 대한 값을 포함하는 새로운 반복 객체입니다. 반복은 삽입 순입니다.

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-set.prototype.keys |

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

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

같이 보기
-----

* `Set.prototype.entries()`
* `Set.prototype.values()`


Set.prototype.delete() - JavaScript

Set.prototype.delete()
======================

**`delete()`** 메서드는 지정한 요소를 `Set` 객체에서 제거합니다.

시도해보기
-----

구문
--

```js
mySet.delete(value);
```

### 매개변수

`value`

`Set` 객체에서 제거할 요소의 값.

### 반환 값

요소를 제거했으면 `true`, 아니면 `false`.

예제
--

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

```js
var mySet = new Set();
mySet.add("foo");

mySet.delete("bar"); // Returns false. No "bar" element found to be deleted.
mySet.delete("foo"); // Returns true. Successfully removed.

mySet.has("foo"); // Returns false. The "foo" element is no longer present.
```

다음 예제는 `Set`에서 객체를 제거하는 방법을 보입니다.

```js
var setObj = new Set(); // Create a New Set.

setObj.add({ x: 10, y: 20 }); // Add object in the set.

setObj.add({ x: 20, y: 30 }); // Add object in the set.

// Delete any point with `x > 10`.
setObj.forEach(function (point) {
  if (point.x > 10) {
    setObj.delete(point);
  }
});
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-set.prototype.delete |

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

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

같이 보기
-----

* `Set` (en-US)
* `Set.prototype.clear()`


Set.prototype[@@iterator]() - JavaScript

Set.prototype[@@iterator]()
===========================

`Set` 객체의 **`@@iterator`** 메서드는
 Iteration 프로토콜을 구현하며,
 전개 구문 및
 `for...of` 루프와 같이
 순회를 예상하는 대부분의 구문에서 Set을 사용할 수 있도록 합니다. Set의 값을 산출하는 반복자를 반환합니다.

이 속성의 초기 값은 `Set.prototype.values` 속성의 초기 값과 동일한 함수 객체입니다.

시도해보기
-----

구문
--

```js
set[Symbol.iterator]()
```

### 반환 값

`Set.prototype.values()`와 동일하게 set의 값을 산출하는 새로운 반복 가능한 반복자 객체를 반환합니다.

예제
--

### for...of 루프를 사용한 반복

 이 메서드를 직접 호출할 필요는 거의 없습니다. `@@iterator` 메서드의 존재는 `Set` 객체가
 반복 가능하게 해주며,
 `for...of` 루프와 같은 반복 구문은 이 메서드를 자동으로 호출하여 루프를 돌릴 반복자를 얻게 됩니다.

```js
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});
for (const v of mySet) {
  console.log(v);
}
```

### 반복자 수동으로 돌리기

반환된 반복자 객체의 `next()` 메서드를 수동으로 호출하여 반복 프로세스를 최대한 제어할 수 있습니다.

```js
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});

const setIter = mySet[Symbol.iterator]();
console.log(setIter.next().value); // "0"
console.log(setIter.next().value); // 1
console.log(setIter.next().value); // Object
```

명세서
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-set.prototype-@@iterator |

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

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

같이 보기
-----

* `Set.prototype.entries()`
* `Set.prototype.keys()`
* `Set.prototype.values()`


Set.prototype.entries() - JavaScript

Set.prototype.entries()
=======================

**`entries()`** 메소드는 `Set` 객체의 각각의 요소를 삽입순서대로 **`[값, 값]`의 형태로 가진 배열**의 새로운 Iterator 객체를 반환합니다. `Set`객체에는 `Map`객체의 `key`가 없습니다. 그러나, `Map` 객체의 API와 비슷하게 유지하기 위해, 각각의 "요소"는 "키"와 "값" 자리에 같은 값을 가지게 됩니다. 결과적으로 `[값, 값]` 형태의 배열이 반환되게 됩니다.

시도해보기
-----

구문
--

```js
entries();
```

### 반환 값

주어진 `Set`의 요소를 삽입순서대로 `[값, 값]`의 형태로 포함한 배열의 새로운 `iterator` 객체를 반환합니다.

예제
--

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

```js
var mySet = new Set();
mySet.add("foobar");
mySet.add(1);
mySet.add("baz");

var setIter = mySet.entries();

console.log(setIter.next().value); // ["foobar", "foobar"]
console.log(setIter.next().value); // [1, 1]
console.log(setIter.next().value); // ["baz", "baz"]
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-set.prototype.entries |

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

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

같이 보기
-----

* `Set.prototype.keys()`
* `Set.prototype.values()`


Set.prototype.forEach() - JavaScript

Set.prototype.forEach()
=======================

**`forEach()`** 메서드는 주어진 함수를 `Set` 요소 각각에 대해 삽입 순서대로 실행합니다.

시도해보기
-----

구문
--

```js
mySet.forEach(callback[, thisArg])
```

### 매개변수

`callback`
각 요소에 대해 실행할 함수. 다음 세 가지 인수를 받습니다.

`currentValue`, `currentKey`
처리할 현재 요소. `Set`은 키를 갖지 않으므로 두 인수 모두에 값을 전달합니다.
`set`
`forEach()`를 호출한 `Set`.

`thisArg`
`callback`을 실행할 때 `this`로 사용할 값.
### 반환 값

`undefined`.

설명
--

`forEach()` 메서드는 주어진 `callback`을 `Set`에 존재하는 요소에 대해 한 번씩 실행합니다. 삭제한 값에 대해선 실행하지 않습니다. 그러나 존재하되 값이 `undefined`인 경우엔 실행합니다.

`callback`은 다음 세 인수와 함께 호출됩니다.

* **요소 값**
* **요소 키**
* **순회 중인 `Set` 객체**

그러나 `Set`은 키 값을 사용하지 않으므로, 처음 두 개의 매개변수 모두 **요소 값**을 받습니다. 이는 `Map`과 `Array`에서 사용하는 `forEach()`와 동일한 형태를 유지하기 위해서입니다.

`thisArg` 매개변수를 `forEach()`에 제공한 경우 `callback`을 호출할 때 전달해 `this`의 값으로 쓰입니다. 전달하지 않으면 `undefined`를 사용하며, 최종 `this` 값은 함수의 `this`를 결정하는 평소 규칙을 따릅니다.

`forEach()`는 각각의 값을 한 번씩 방문하지만, 순회를 끝내기 전에 제거하고 다시 추가한 값은 예외입니다. 방문하기 전 제거한 값에 대해서는 `callback`을 호출하지 않습니다. `forEach()`가 끝나기 전 추가한 요소는 방문합니다.

`forEach()`는 `Set` 객체의 요소에 대해 `callback`을 실행만 하며 값을 반환하지는 않습니다.

예제
--

### `Set`의 내용물 기록하기

다음 코드는 `Set`의 요소 각각을 새로운 줄에 기록합니다.

```js
function logSetElements(value1, value2, set) {
  console.log("s[" + value1 + "] = " + value2);
}

new Set(["foo", "bar", undefined]).forEach(logSetElements);

// 콘솔 로그:
// "s[foo] = foo"
// "s[bar] = bar"
// "s[undefined] = undefined"
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-set.prototype.foreach |

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

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

같이 보기
-----

* `Array.prototype.forEach()`
* `Map.prototype.forEach()`


Set.prototype.values() - JavaScript

Set.prototype.values()
======================

**`values()`** method는 `Set` 객체에 요소가 삽입된 순서대로 각 요소의 값을 순환할 수 있는 새로운 Iterator 객체를 반환합니다.

**참고:** **`keys()`** 메소드는 이 메소드의 별칭입니다(`Map` 객체와 유사성을 위해).
 따라서, `key()` 페이지는 이곳으로 리다이렉트 됩니다.
 그것은 정확히 동일하게 작동하며 `Set` 요소의 **값**을 반환합니다.

시도해보기
-----

구문
--

```js
values();
```

### 반환 값

주어진 `Set`의 각 요소의 값을 삽입 순서대로 포함하는 새로운 iterator 객체

예시
--

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

```js
var mySet = new Set();
mySet.add("foo");
mySet.add("bar");
mySet.add("baz");
var setIter = mySet.values();
console.log(setIter.next().value); // "foo"
console.log(setIter.next().value); // "bar"
console.log(setIter.next().value); // "baz"
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-set.prototype.values |

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

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

같이 보기
-----

* `Set.prototype.entries()`


Set.prototype.add() - JavaScript

Set.prototype.add()
===================

**`add()`** 메서드는 `Set` 개체의 맨 뒤에 주어진 `value`의 새 요소를 추가합니다.

시도해보기
-----

구문
--

```js
mySet.add(value);
```

### 매개변수

`value`

`Set` 객체에 추가할 요소의 값.

### 반환 값

`Set` 객체.

예제
--

### `add` 메서드 사용하기

```js
var mySet = new Set();

mySet.add(1);
mySet.add(5).add("어떤 문자열"); // 계속 붙일 수 있음

console.log(mySet);
// Set [1, 5, "어떤 문자열"]
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-set.prototype.add |

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

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

같이 보기
-----

* `Set` (en-US)
* `Set.prototype.delete()`
* `Set.prototype.has()`


Set.prototype.has() - JavaScript

Set.prototype.has()
===================

**`has()`** 메서드는 `Set` 객체에 주어진 요소가 존재하는지 여부를 판별해 반환합니다.

시도해보기
-----

구문
--

```js
mySet.has(value);
```

### 매개변수

`value`

`Set` 객체에서 존재 여부를 판별할 값.

### 반환 값

`Set` 객체에 값이 존재하면 `true`, 아니면 `false`.

**참고:** 기술적으로, `has()`는 `sameValueZero` 알고리즘을 사용해 요소의 존재 여부를 판별합니다.

예제
--

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

```js
var mySet = new Set();
mySet.add("foo");

mySet.has("foo"); // true
mySet.has("bar"); // false

var set1 = new Set();
var obj1 = { key1: 1 };
set1.add(obj1);

set1.has(obj1); // true
set1.has({ key1: 1 }); // false, 형태만 같은 서로 다른 객체의 참조이기 때문
set1.add({ key1: 1 }); // set1의 요소가 2개로 늘어남
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-set.prototype.has |

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

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

같이 보기
-----

* `Set` (en-US)
* `Set.prototype.add()`
* `Set.prototype.delete()`


ArrayBuffer.prototype.byteLength - JavaScript

ArrayBuffer.prototype.byteLength
================================

**`byteLength`** 접근자 속성은 `ArrayBuffer`의 길이를 바이트 단위로 반환합니다.

시도해보기
-----

구문
--

```js
arraybuffer.byteLength;
```

설명
--

`byteLength` 속성은 설정자 속성이 `undefined`인 접근자 속성으로, 오직 읽기만 가능합니다. `byteLength`는 배열 버퍼를 처음 생성할 때 정해지며 바꿀 수 없습니다. `ArrayBuffer`가 분리된 경우 0을 반환합니다.

예제
--

```js
var buffer = new ArrayBuffer(8);
buffer.byteLength; // 8
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-arraybuffer.prototype.bytelength |

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

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

같이 보기
-----

* `ArrayBuffer`


ArrayBuffer.prototype.slice() - JavaScript

ArrayBuffer.prototype.slice()
=============================

**`slice()`** 메서드는 현재 `ArrayBuffer`를 주어진 시작과 끝점에 맞춰 자른 새로운 `ArrayBuffer`를 반환합니다.

시도해보기
-----

구문
--

```js
    arraybuffer.slice(begin[, end])
```

### 매개변수

`begin`

자르기 시작할 지점을 나타내는 0 기반 인덱스.

`end` Optional

자르기 끝낼 지점을 나타내는 바이트 인덱스. 지정하지 않은 경우 새로운 `ArrayBuffer`는 지정한 시작점부터 현재 `ArrayBuffer`의 끝까지 가지게 됩니다.

### 반환 값

새로운 `ArrayBuffer` 객체.

설명
--

`slice()` 메서드는 `end` 매개변수로 지정한 바이트 위치 바로 앞까지 현재 배열 버퍼를 복사합니다. `begin`과 `end`는 음의 값인 경우 배열의 시작부터 위치를 세지 않고 끝에서부터 셉니다.

`end` 값이 유효한 범위를 벗어날 경우 버퍼 길이에 맞춰 잘라냅니다. 또한 새로운 ArrayBuffer의 길이가 음의 값이 나올 경우 0으로 처리합니다.

예제
--

### `ArrayBuffer` 복사하기

```js
const buf1 = new ArrayBuffer(8);
const buf2 = buf1.slice(0);
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-arraybuffer.prototype.slice |

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

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

같이 보기
-----

* `ArrayBuffer`


ArrayBuffer.isView() - JavaScript

ArrayBuffer.isView()
====================

**`ArrayBuffer.isView()`** 메서드는 주어진 값이 `ArrayBuffer` 뷰, 즉 형식화 배열 객체 또는 `DataView`인지 판별합니다..

시도해보기
-----

구문
--

```js
ArrayBuffer.isView(value);
```

### 매개변수

`value`

판별할 값.

### 반환 값

주어진 값이 `ArrayBuffer` 뷰라면 `true`, 아니면 `false`.

예제
--

```js
ArrayBuffer.isView(); // false
ArrayBuffer.isView([]); // false
ArrayBuffer.isView({}); // false
ArrayBuffer.isView(null); // false
ArrayBuffer.isView(undefined); // false
ArrayBuffer.isView(new ArrayBuffer(10)); // false

ArrayBuffer.isView(new Uint8Array()); // true
ArrayBuffer.isView(new Float32Array()); // true
ArrayBuffer.isView(new Int8Array(10).subarray(0, 3)); // true

const buffer = new ArrayBuffer(2);
const dv = new DataView(buffer);
ArrayBuffer.isView(dv); // true
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-arraybuffer.isview |

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

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

같이 보기
-----

* JavaScript 형식화 배열


ArrayBuffer() 생성자 - JavaScript

ArrayBuffer() 생성자
=================

**`ArrayBuffer()`** 생성자는 `ArrayBuffer` 객체를 생성합니다.

시도해보기
-----

구문
--

```js
new ArrayBuffer(length);
```

### 매개변수

`length`

생성할 `ArrayBuffer`의 바이트 크기.

### 반환 값

지정한 크기를 가진 새로운 `ArrayBuffer` 객체. 내용은 모두 0으로 초기화됩니다.

### 예외

`length`가 `Number.MAX_SAFE_INTEGER`보다 크거나, 음수면 `RangeError`.

예제
--

아래 예제 코드는 8바이트 버퍼를 생성한 후 `Int32Array` 뷰로 그 버퍼를 참조합니다.

```js
var buffer = new ArrayBuffer(8);
var view = new Int32Array(buffer);
```

명세
--

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

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

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

같이 보기
-----

* JavaScript 형식화 배열
* `SharedArrayBuffer`


BigInt64Array() constructor - JavaScript

BigInt64Array() constructor
===========================

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

구문
--

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

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

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

### 매개변수

`TypedArray`를 참조하세요.

### 예외

`TypedArray`를 참조하세요.

예제
--

### `BigInt64Array`을 생성하기 위한 각기 다른 방법

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

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

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

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

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

명세서
---

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

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

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

같이 보기
-----

* JavaScript 형식화 배열
* `BigUint64Array`
* `DataView`


RangeError() 생성자 - JavaScript

RangeError() 생성자
================

**`RangeError()`** 생성자는 어떤 값이 집합에 없거나 허용되는 범위가 아닐 때 발생하는 오류를 생성합니다

구문
--

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

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

**참고:** `RangeError()`는 `new`와 함께 호출하거나 혹은 `new` 없이 호출할 수 있습니다. 두 방법 모두 새로운 `RangeError` 인스턴스를 생성합니다.

### 매개변수

`message` Optional

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

`options` Optional

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

`cause` Optional

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

`fileName` Optional
비표준

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

`lineNumber` Optional
비표준

예외가 발상한 코드의 줄 수

예제
--

### 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-nativeerror-constructors |

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

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()`


Intl.NumberFormat - JavaScript

Intl.NumberFormat
=================

\*\*`Intl.NumberFormat`\*\*은 언어에 맞는 숫자 서식을 지원하는 객체의 생성자입니다.

시도해보기
-----

생성자
---

`Intl.NumberFormat()` (en-US)

Creates a new `NumberFormat` object.

정적 메서드
------

`Intl.NumberFormat.supportedLocalesOf()` (en-US)

주어진 로케일 목록 중, 런타임이 지원하는 항목을 배열로 반환합니다.

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

`Intl.NumberFormat.prototype.format()` (en-US)

Getter function that formats a number according to the locale and formatting options of this `Intl.NumberFormat` object.

`Intl.NumberFormat.prototype.formatToParts()` (en-US)

Returns an `Array` of objects representing the number string in parts that can be used for custom locale-aware formatting.

`Intl.NumberFormat.prototype.formatRange()` (en-US)

Getter function that formats a range of numbers according to the locale and formatting options of the `Intl.NumberFormat` object from which the method is called.

`Intl.NumberFormat.prototype.formatRangeToParts()` (en-US)

Returns an `Array` of objects representing the range of number strings in parts that can be used for custom locale-aware formatting.

`Intl.NumberFormat.prototype.resolvedOptions()` (en-US)

Returns a new object with properties reflecting the locale and collation options computed during initialization of the object.

예제
--

### 기본적인 사용 방법

로케일을 지정하지 않고 사용하면 기본 로케일 및 기본 옵션 서식을 적용한 문자열을 반환합니다.

```js
var number = 3500;

console.log(new Intl.NumberFormat().format(number));
// → 한국 로케일의 경우 '3,500' 표시
```

### `locales` 사용하기

다음 예제는 지역화된 숫자 서식의 예시를 보입니다. 어플리케이션의 사용자 인터페이스 언어에 맞는 서식을 적용하려면 `locales` 매개변수로 적절한 언어(와, 필요한 경우 대체 언어)를 제공하는걸 잊지 마세요.

```js
var number = 123456.789;

// 독일은 소수점 구분자로 쉼표를 사용하고 천 단위 구분자로 마침표를 사용
console.log(new Intl.NumberFormat("de-DE").format(number));
// → 123.456,789

// 대부분의 아랍어 사용 국가에서는 실제 아라비아 숫자를 사용
console.log(new Intl.NumberFormat("ar-EG").format(number));
// → ١٢٣٤٥٦٫٧٨٩

// 인도는 천, 라크(십만), 크로르(천만) 단위에 구분자 사용
console.log(new Intl.NumberFormat("en-IN").format(number));
// → 1,23,456.789

// nu 확장 키로 기수법 지정 (아래 예시는 중국식 숫자 표기)
console.log(new Intl.NumberFormat("zh-Hans-CN-u-nu-hanidec").format(number));
// → 一二三,四五六.七八九

// 발리어와 같이 지원되지 않을 수도 있는 언어를 지정할 때는
// 다음과 같이 대체 언어를 지정할 수 있음. 아래의 경우 대체 언어는 인도어
console.log(new Intl.NumberFormat(["ban", "id"]).format(number));
// → 123.456,789
```

### `options` 사용

`options` 매개변수를 지정해 결과를 원하는 형태로 바꿀 수 있습니다.

```js
var number = 123456.789;

// 통화 서식
console.log(
  new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR" }).format(
    number,
  ),
);
// → 123.456,79 €

// 한국 원화는 보조 통화 단위를 사용하지 않음
console.log(
  new Intl.NumberFormat("ko-KR", { style: "currency", currency: "KRW" }).format(
    number,
  ),
);
// → ₩123,457

// 유효숫자를 세 개로 제한
console.log(
  new Intl.NumberFormat("en-IN", { maximumSignificantDigits: 3 }).format(
    number,
  ),
);
// → 1,23,000
```

명세
--

| Specification |
| --- |
| ECMAScript Internationalization API Specification # numberformat-objects |

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

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

같이 보기
-----

* `Intl` (en-US)
* A polyfill of `Intl.NumberFormat` in FormatJS


Intl.DateTimeFormat - JavaScript

Intl.DateTimeFormat
===================

\*\*`Intl.DateTimeFormat`\*\*은 언어에 맞는 날짜 및 시간 서식을 적용하기 위한 객체입니다.

시도해보기
-----

생성자
---

`Intl.DateTimeFormat()`

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

정적 메서드
------

`Intl.DateTimeFormat.supportedLocalesOf()` (en-US)

매개변수로 제공한 로케일 목록 중, 런타임이 현재 지원하는 로케일 항목을 배열로 반환합니다.

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

`Intl.DateTimeFormat.prototype.format()` (en-US)

`DateTimeFormat` 객체의 로케일과 서식 옵션에 맞춰 날짜를 서식화해 반환합니다.

`Intl.DateTimeFormat.prototype.formatToParts()` (en-US)

날짜 서식 문자열의 각 부분을 분해하여 토큰 객체로 만들고 `Array`로 반환합니다. 로케일에 따라 다른 사용자 지정 서식을 적용할 때 사용할 수 있습니다.

`Intl.DateTimeFormat.prototype.resolvedOptions()` (en-US)

`DateTimeFormat` 객체를 초기화할 때 할당된 로케일 및 서식 옵션의 계산 값을 나타내는 객체를 반환합니다.

`Intl.DateTimeFormat.prototype.formatRange()` (en-US)

두 개의 Dates를 받은 후, 현재 할당된 로케일과 옵션 내에서 가장 간결한 형태로 두 날짜의 범위를 나타내는 문자열을 반환합니다.

`Intl.DateTimeFormat.prototype.formatRangeToParts()` (en-US)

두 개의 Dates를 받은 후, 현재 할당된 로케일과 옵션 내에서 가장 간결한 형태로 두 날짜의 범위를 나타내는 문자열을 생성합니다. 문자열의 각 부분을 분해하여 토큰 객체로 만들고 `Array`로 반환합니다.

예제
--

### `DateTimeFormat` 사용하기

로케일을 지정하지 않고 사용하면 기본 로케일과 기본 옵션의 서식을 적용한 문자열을 반환합니다.

```js
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// 매개변수 없이 toLocaleString()을 호출한 결과는
// 구현체, 기본 로케일, 기본 시간대에 다라 달라짐
console.log(new Intl.DateTimeFormat().format(date));
// → ko-KR 로케일(언어)과 Asia/Seoul 시간대(UTC+0900)에서 "2012. 12. 20."
```

### 로케일 지정하기

다음 예제는 지역화된 숫자 서식 방법을 보여줍니다. 사용자의 언어에 적합한 서식을 적용하려면 `locales` 매개변수로 해당 언어(필요한 경우 대체 언어까지)를 제공하는 걸 잊지 마세요.

```js
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// 아래 결과는 모두 Asia/Seoul 시간대를 사용한 결과 (UTC+0900, 한국 표준시)

// 한국어에서 날짜 표기는 연월일 순서
console.log(new Intl.DateTimeFormat("ko-KR").format(date));
// → "2012. 12. 20."

// 미국 영어에서 날짜 표기는 월일년 순서
console.log(new Intl.DateTimeFormat("en-US").format(date));
// → "12/20/2012"

// 영국 영어에서 날짜 표기는 일월년 순서
console.log(new Intl.DateTimeFormat("en-GB").format(date));
// → "20/12/2012"

// 대부분의 아랍어 국가에서는 진짜 아라비아 숫자 사용
console.log(new Intl.DateTimeFormat("ar-EG").format(date));
// → "٢٠/١٢/٢٠١٢"

// 일본어의 경우 어플리케이션에 연호를 사용해야 할 수도 있음
// 2012년은 헤이세이 24년
console.log(new Intl.DateTimeFormat("ja-JP-u-ca-japanese").format(date));
// → "24/12/20"

// 발리어와 같이 지원되지 않을 수도 있는 언어를 지정할 때는
// 다음과 같이 대체 언어를 지정할 수 있음. 아래의 경우 대체 언어는 인도어
console.log(new Intl.DateTimeFormat(["ban", "id"]).format(date));
// → "20/12/2012"
```

### 옵션 지정하기

`options` 매개변수를 지정하면 날짜와 시간 서식 결과를 원하는 형태로 바꿀 수 있습니다.

```js
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// 긴 날짜 서식에 더해 요일 요청
var options = {
  weekday: "long",
  year: "numeric",
  month: "long",
  day: "numeric",
};
console.log(new Intl.DateTimeFormat("de-DE", options).format(date));
// → "Donnerstag, 20. Dezember 2012"

// 어플리케이션이 GMT를 사용해야 하고, 그 점을 명시해야 할 때
options.timeZone = "UTC";
options.timeZoneName = "short";
console.log(new Intl.DateTimeFormat("en-US", options).format(date));
// → "Thursday, December 20, 2012, GMT"

// 좀 더 자세한 설정이 필요하면
options = {
  hour: "numeric",
  minute: "numeric",
  second: "numeric",
  timeZone: "Australia/Sydney",
  timeZoneName: "short",
};
console.log(new Intl.DateTimeFormat("en-AU", options).format(date));
// → "2:00:00 pm AEDT"

// 미국에서도 24시간제가 필요할 때
options = {
  year: "numeric",
  month: "numeric",
  day: "numeric",
  hour: "numeric",
  minute: "numeric",
  second: "numeric",
  hour12: false,
  timeZone: "America/Los\_Angeles",
};
console.log(new Intl.DateTimeFormat("en-US", options).format(date));
// → "12/19/2012, 19:00:00"

// 옵션을 지정하면서 로케일은 브라우저 기본값을 사용하고 싶을 땐 'default' 지정
console.log(new Intl.DateTimeFormat("default", options).format(date));
// → "2012. 12. 19. 19시 0분 0초"

// 오전/오후 시간 표시가 필요할 때
options = { hour: "numeric", dayPeriod: "short" };
console.log(new Intl.DateTimeFormat("en-US", options).format(date));
// → 10 at night
```

명세
--

| Specification |
| --- |
| ECMAScript Internationalization API Specification # datetimeformat-objects |

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

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

같이 보기
-----

* `Intl` (en-US)


Intl.DisplayNames - JavaScript

Intl.DisplayNames
=================

**`Intl.DisplayNames`** 객체를 사용하면 언어, 지역 그리고 문자 체계 표시 이름을 일관되게 번역할 수 있습니다.

시도해보기
-----

생성자
---

`Intl.DisplayNames()` (en-US)

새 `Intl.DisplayNames` 객체를 생성합니다.

정적 메서드
------

`Intl.DisplayNames.supportedLocalesOf()` (en-US)

런타임의 기본 로케일로 대체되지 않고, 제공된 로케일 중 지원되는 로케일을 포함한 배열을 반환합니다.

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

이 속성은 `Intl.DisplayNames.prototype`에서 정의되며 모든 `Intl.DisplayNames` 인스턴스에서 공유됩니다.

`Intl.DisplayNames.prototype.constructor`

인스턴스 객체를 만든 생성자 함수입니다. `Intl.DisplayNames` 인스턴스의 경우 초기 값은 `Intl.DisplayNames` (en-US) 생성자입니다.

`Intl.DisplayNames.prototype[@@toStringTag]`

`@@toStringTag` (en-US) 속성의 초기 값은 문자열 `"Intl.DisplayNames"`입니다. 이 속성은 `Object.prototype.toString()`에서 사용됩니다.

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

`Intl.DisplayNames.prototype.of()` (en-US)

이 메서드는 `code`를 받고 `Intl.DisplayNames` 인스턴스를 만들때 제공받은 로케일과 옵션에 따라 문자열을 반환합니다.

`Intl.DisplayNames.prototype.resolvedOptions()` (en-US)

객체 초기화 중에 계산된 로케일과 서식 옵션을 반영한 속성이 있는 새 객체를 반환합니다.

예제
--

### 지역 코드 표시 이름

로케일에 대한 `Intl.DisplayNames`를 생성하고, 지역 코드에 대한 표시 이름을 가져옵니다.

```js
// 영어로 지역 표시 이름을 가져옵니다.
let regionNames = new Intl.DisplayNames(["en"], { type: "region" });
regionNames.of("419"); // "Latin America"
regionNames.of("BZ"); // "Belize"
regionNames.of("US"); // "United States"
regionNames.of("BA"); // "Bosnia & Herzegovina"
regionNames.of("MM"); // "Myanmar (Burma)"

// 한국어로 지역 표시 이름을 가져옵니다.
regionNames = new Intl.DisplayNames(["ko"], { type: "region" });
regionNames.of("419"); // "라틴 아메리카"
regionNames.of("BZ"); // "벨리즈"
regionNames.of("US"); // "미국"
regionNames.of("BA"); // "보스니아 헤르체고비나"
regionNames.of("MM"); // "미얀마"
```

### 언어 표시 이름

로케일에 대한 `Intl.DisplayNames`를 생성하고, 언어-문자 체계-지역 시퀀스의 표시 이름을 가져옵니다.

```js
// 영어로 언어 표시 이름을 가져옵니다.
let languageNames = new Intl.DisplayNames(["en"], { type: "language" });
languageNames.of("fr"); // "French"
languageNames.of("de"); // "German"
languageNames.of("fr-CA"); // "Canadian French"
languageNames.of("ko"); // "Traditional Chinese"
languageNames.of("en-US"); // "American English"
languageNames.of("zh-TW"); // "Chinese (Taiwan)"]

// 한국어로 언어 표시 이름을 가져옵니다.
languageNames = new Intl.DisplayNames(["ko"], { type: "language" });
languageNames.of("fr"); // "프랑스어"
languageNames.of("zh"); // "중국어"
languageNames.of("de"); // "독일어"
```

### 문자 코드 표시 이름

로케일에 대한 `Intl.DisplayNames`를 생성하고 문자 코드의 표시 이름을 가져옵니다.

```js
// 영어로 문자 체계 표시 이름을 가져옵니다.
let scriptNames = new Intl.DisplayNames(["en"], { type: "script" });
// Get script names
scriptNames.of("Latn"); // "Latin"
scriptNames.of("Arab"); // "Arabic"
scriptNames.of("Kana"); // "Katakana"

// 한국어로 문자 체계 이름을 가져옵니다.
scriptNames = new Intl.DisplayNames(["ko"], { type: "script" });
scriptNames.of("Latn"); // "로마자"
scriptNames.of("Arab"); // "아랍 문자"
scriptNames.of("Kana"); // "가타카나"
```

### 통화 코드 표시 이름

로케일에 대한 `Intl.DisplayNames`를 생성하고 통화 코드의 표시 이름을 가져옵니다.

```js
// 영어로 통화 코드의 이름을 가져옵니다.
let currencyNames = new Intl.DisplayNames(["en"], { type: "currency" });
// 통화 이름 가져오기
currencyNames.of("USD"); // "US Dollar"
currencyNames.of("EUR"); // "Euro"
currencyNames.of("TWD"); // "New Taiwan Dollar"
currencyNames.of("CNY"); // "Chinese Yuan"

// 한국어로 통화 코드의 이름을 가져옵니다.
currencyNames = new Intl.DisplayNames(["ko"], { type: "currency" });
currencyNames.of("USD"); // "미국 달러"
currencyNames.of("EUR"); // "유로"
currencyNames.of("TWD"); // "신 타이완 달러"
currencyNames.of("CNY"); // "중국 위안화"
```

명세서
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # intl-displaynames-objects |

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

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

같이 보기
-----

* `Intl` (en-US)


Intl.supportedValuesOf() - JavaScript

Intl.supportedValuesOf()
========================

**`Intl.supportedValuesOf()`** 메서드는 지원되는 역법(calendar), 콜레이터, 통화, 수 체계 또는 구현시 지원되는 단위 값을 포함하는 배열을 반환합니다.

중복 값들은 제거되며, 배열은 알파벳 오름차순으로 정렬(정확하게는 `Array.prototype.sort()`)에 `undefined` 비교 함수를 사용하여 정렬)됩니다.

 이 메서드는 특정 기능 구현시에 값이 지원되는지 여부를 테스트하고, 필요한 경우에만 폴리필을 다운로드받는데 사용할 수 있습니다.
 또한 사용자가 선호하는 지역화된 값을 선택할 수 있게 하는 UI(예를 들어 UI가 WebGL 또는 서버사이드로 구현되었을 때)를 만드는 데에도 사용됩니다.

시도해보기
-----

구문
--

```js
Intl.supportedValuesOf(key)
```

### 매개변수

`key`

 반환할 값의 범주를 나타내는 키 문자열로,
 `"calendar"`, `"collation"`, `"currency"`,`"numberingSystem"`, `"timeZone"`, `"unit"` 중의 하나입니다.

### 반환 값

지정된 Key에 대해 구현시 지원하는 값을 나타내는 고유한 문자열 값의 정렬된 배열입니다.

### 예외

`RangeError`

지원되지 않는 Key가 인자로 전달되었을 때

예제
--

### 기능 테스트

메서드가 지원되는지 여부를 `undefined`과 비교하여 확인할 수 있습니다.

```js
if (typeof Intl.supportedValuesOf !== "undefined") {
  // 메서드가 지원됩니다.
}
```

### Key의 모든 값 가져오기

 달력에 지원되는 값을 확인하기 위해서는 `"calendar"` 키로 메서드를 실행합니다.
 아래와 같이 반환된 배열을 반복 탐색합니다.

```js
Intl.supportedValuesOf("calendar").forEach((calendar) => {
  // "buddhist", "chinese", "coptic", "dangi", 등.
});
```

**참고:** calendar 값으로 반환된 배열은 항상 "gregory" (그레고리력)을 포함합니다.

다른 값도 동일한 방식으로 확인할 수 있습니다.

```js
Intl.supportedValuesOf("collation").forEach((collation) => {
  // "big5han", "compat", "dict", "emoji", 등.
});

Intl.supportedValuesOf("currency").forEach((currency) => {
  // "ADP", "AED", "AFA", "AFN", "ALK", "ALL", "AMD", 등.
});

Intl.supportedValuesOf("numberingSystem").forEach((numberingSystem) => {
  // "adlm", "ahom", "arab", "arabext", "bali", 등.
});

Intl.supportedValuesOf("timeZone").forEach((timeZone) => {
  // "Africa/Abidjan", "Africa/Accra", "Africa/Addis\_Ababa", "Africa/Algiers", 등.
});

Intl.supportedValuesOf("unit").forEach((unit) => {
  // "acre", "bit", "byte", "celsius", "centimeter", 등.
});
```

### 유효하지 않은 Key 사용시 RangeError 발생

```js
try {
  Intl.supportedValuesOf("유효하지 않은 키");
} catch (err) {
  //Error: RangeError: invalid key: "유효하지 않은 키"
}
```

명세서
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-intl.supportedvaluesof |

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

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

같이 보기
-----

* `Intl` (en-US)
* A polyfill of `Intl.supportedValuesOf` in FormatJS


Intl.Locale.prototype.language - JavaScript

Intl.Locale.prototype.language
==============================

**`Intl.Locale.prototype.language`** 속성은 locale과 관련된 언어를 반환하는 접근자 속성입니다.

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

언어는 locale의 핵심 기능 중 하나입니다. 유니 코드 사양은 locale의 언어 식별자를 언어와 지역으로 함께 취급합니다 (예를 들어 영국 영어와 미국 영어 등의 방언과 변형을 구별하기 위해). `Locale` (en-US)의 language 속성은 로캘의 언어 하위 태그를 엄격하게 반환합니다.

Examples
--------

### locale 식별자 문자열 인수에서 언어 설정

유효한 유니 코드 locale 식별자가 되려면 문자열이 언어 하위 태그로 시작해야합니다. `Locale` (en-US) 생성자에 대한 주요 인수는 유효한 유니 코드 locale 식별자여야하므로 생성자가 사용될 때마다 언어 하위 태그가있는 식별자를 전달해야합니다.

```js
let langStr = new Intl.Locale("en-Latn-US");

console.log(langStr.language); // Prints "en"
```

### configuration 객체로 언어 오버라이딩 하기

언어 하위 태그를 지정해야하지만 `Locale` (en-US) 생성자는 언어 하위 태그를 재정의 할 수있는 구성 개체를 사용합니다.

```js
let langObj = new Intl.Locale("en-Latn-US", { language: "es" });

console.log(langObj.language); // Prints "es"
```

명세서
---

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-Intl.Locale.prototype.language |

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

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

See also
--------

* `Locale` (en-US)
* Unicode language subtag specification


Intl.DateTimeFormat() 생성자 - JavaScript

Intl.DateTimeFormat() 생성자
=========================

**`Intl.DateTimeFormat`** 생성자는 언어에 맞는 날짜 및 시간 서식을 적용하기 위한 `Intl.DateTimeFormat` 객체를 생성합니다.

시도해보기
-----

구문
--

```js
new Intl.DateTimeFormat();
new Intl.DateTimeFormat(locales);
new Intl.DateTimeFormat(locales, options);
```

### 매개변수

`locales` Optional

BCP 47 언어 태그를 포함하는 문자열이나 문자열의 배열입니다. 브라우저 기본 로케일을 사용하려면 빈 배열을 지정하세요. `ko-u-ca-buddhist`처럼 유니코드 확장 형태도 지원합니다. 로케일 매개변수의 일반적인 형식 및 해석은 Intl (en-US) 문서를 참고하세요. 다음의 유니코드 확장 키를 사용할 수 있습니다.

`nu`

 사용할 기수법. "`arab`",
 "`arabext`", "`bali`", "`beng`",
 "`deva`", "`fullwide`", "`gujr`",
 "`guru`", "`hanidec`", "`khmr`",
 "`knda`", "`laoo`", "`latn`",
 "`limb`", "`mlym`", "`mong`",
 "`mymr`", "`orya`", "`tamldec`",
 "`telu`", "`thai`", "`tibt`" 등을 사용할 수 있습니다.

`ca`

 역법. "`buddhist`",
 "`chinese`", "`coptic`", "`ethiopia`",
 "`ethiopic`", "`gregory`", "`hebrew`",
 "`indian`", "`islamic`", "`iso8601`",
 "`japanese`", "`persian`", "`roc`" 등을 사용할 수 있습니다.

`hc`

 시간제. "`h11`",
 "`h12`", "`h23`", "`h24`" 등을 사용할 수 있습니다.

`options` Optional

다음 속성 일부 또는 전부를 포함하는 객체입니다.

* `dateStyle`
    + : `format()`을 호출했을 때 사용할 날짜 서식입니다. 가능한 값은 다음을 포함합니다.
        - "`full`"
        - "`long`"
        - "`medium`"
        - "`short`"
    **참고:** `dateStyle`은 `timeStyle`과 함께 사용할 수 있지만, 다른 옵션인 `weekday`, `hour`, `month` 등과는 함께 사용할 수 없습니다.
* `timeStyle`
    + : `format()`을 호출했을 때 사용할 시간 서식입니다. 가능한 값은 다음을 포함합니다.
        - "`full`"
        - "`long`"
        - "`medium`"
        - "`short`"
    **참고:** `timeStyle`은 `dateStyle`과 함께 사용할 수 있지만, 다른 옵션인 `weekday`, `hour`, `month` 등과는 함께 사용할 수 없습니다.
* `calendar`
    + : 역법입니다. "`buddhist`",
     "`chinese`", " `coptic`", "`ethiopia`",
     "`ethiopic`", "`gregory`", " `hebrew`",
     "`indian`", "`islamic`", "`iso8601`", "
     `japanese`", "`persian`", "`roc`" 등을 사용할 수 있습니다.
* `dayPeriod`
    + : (영어의 경우) "in the morning", "am", "noon", "n"처럼 시간의 위치를 나타낼 때 사용할 시간 서식입니다. "`narrow`", "`short`", " `long`" 등을 사용할 수 있습니다.
**참고:**

    + 12시간제 형식을 사용할 때만 결과의 차이가 있습니다.
    + 한국어를 포함해, 많은 로케일에서는 지정한 너비에 상관하지 않고 같은 문자열을 반환합니다. ("새벽", "밤" 등)
* `numberingSystem`
    + : 기수법입니다. "`arab`",
     "`arabext`", " `bali`", "`beng`",
     "`deva`", "`fullwide`", " `gujr`",
     "`guru`", "`hanidec`", "`khmr`", "
     `knda`", "`laoo`", "`latn`",
     "`limb`", "`mlym`", " `mong`",
     "`mymr`", "`orya`", "`tamldec`", "
     `telu`", "`thai`", "`tibt`" 등을 사용할 수 있습니다.
* `localeMatcher`
    + : 로케일 매칭 알고리즘입니다. 가능한 값은 "`lookup`", "`best fit`"이며 기본 값은 "`best fit`"입니다. 자세한 정보는 Intl (en-US) 문서를 참고하세요.
* `timeZone`
    + : 시간대입니다. 구현체가 반드시 인식해야 하는 유일한 값은 "`UTC`"입니다. 기본 값은 런타임의 기본 시간대입니다. 구현체에 따라 "`Asia/Seoul`", "`Asia/Kolkata`",
     "`America/New_York`"처럼 IANA 시간대 데이터베이스의 시간대 이름을 인식할 수도 있습니다.
* `hour12`
    + : 24시간제 대신 12시간제를 사용할지에 대한 여부입니다. 가능한 값은 `true` 또는 `false`입니다. 기본 값은 로케일에 따라 다릅니다. 이 값은 언어 태그의 `hc`, 옵션 중 `hourCycle`보다 우선합니다.
* `hourCycle`
    + : 시간제입니다. "`h11`",
     "`h12`", "`h23`", "`h24`" 등을 사용할 수 있습니다. 이 값은 언어 태그의 `hc`보다 우선하며, `hour12`가 이 값보다 우선합니다.
* `formatMatcher`
    + : 서식 매칭 알고리즘입니다. 가능한 값은 "`basic`", "`best fit`"이며 기본 값은 "`best fit`"입니다. 자세한 설명은 아래 내용을 참고하세요.

이하 속성은 서식 출력 결과가 사용할 날짜 및 시간 구성요소를 나타냅니다. 구현체는 적어도 아래의 구성요소 조합을 지원해야 합니다.

* `weekday`, `year`, `month`, `day`, `hour`, `minute`, `second`
* `weekday`, `year`, `month`, `day`
* `year`, `month`, `day`
* `year`, `month`
* `month`, `day`
* `hour`, `minute`, `second`
* `hour`, `minute`

구현체에 따라 다른 구성요소 조합을 지원할 수도 있습니다. 시간 서식을 요청하면, 현재 구현체가 지원하는 모든 구성요소 조합 중 최적 조합을 탐색해 사용합니다. 탐색 알고리즘은 `formatMatcher` 옵션 속성을 사용해 지정할 수 있고, 명세에 완벽히 정의된 "`basic`" 알고리즘과 구현체에 따라 다른 "`best-fit`" 알고리즘의 두 종류가 있습니다.

`weekday`

요일. 가능한 값은 다음과 같습니다.

* "`long`" (`금요일`, `Thursday` 등)
* "`short`" (`(금)`, `Thu` 등)
* "`narrow`" (`(금)`, `T` 등). 일부 로케일에서는 두 개의 요일이 같은 값을 스타일을 가질 수 있습니다. (예: `Thursday`와 `Tuesday` 둘 다 `T`)

`era`

시대. 가능한 값은 다음과 같습니다.

* "`long`" (`서기`, `Anno Domini` 등)
* "`short`" (`AD` 등)
* "`narrow`" (`A`, `AD` 등)

`year`

연도. 가능한 값은 다음과 같습니다.

* "`numeric`" (`2019년`, `2019` 등)
* "`2-digit`" (`19년`, `19` 등)

`month`

월. 가능한 값은 다음과 같습니다.

* "`numeric`" (`3` 등)
* "`2-digit`" (`03` 등)
* "`long`" (`3월`, `March` 등)
* "`short`" (`Mar` 등)
* "`narrow`" (`M` 등). 일부 로케일에서는 두 개의 요일이 같은 값을 스타일을 가질 수 있습니다. (예: `March`와 `May` 둘 다 `M`)

`day`

일. 가능한 값은 다음과 같습니다.

* "`numeric`" (`1` 등)
* "`2-digit`" (`01` 등)

`hour`

시. 가능한 값은 `"numeric"`, `"2-digit"`입니다.

`minute`

분. 가능한 값은 `"numeric"`, `"2-digit"`입니다.

`second`

초. 가능한 값은 `"numeric"`, `"2-digit"`입니다.

`fractionalSecondDigits`

밀리초를 나타낼 소숫점 이하 자릿수. 가능한 값은 다음과 같습니다.

* `0` (밀리초를 표시하지 않음.)
* `1` (밀리초를 한 자리까지 표시함. 예를 들어, 0.736초는 7까지 보입니다.)
* `2` (밀리초를 두 자리까지 표시함. 예를 들어, 0.736초는 73로 보입니다.)
* `3` (밀리초를 세 자리까지 표시함. 예를 들어, 0.736초는 736으로 보입니다.)

`timeZoneName`

시간대 이름. 가능한 값은 다음과 같습니다.

* "`long`" 지역화된 긴 시간대 이름 (`한국 표준시`, `British Summer Time`)
* "`short`" 지역화된 짧은 시간대 이름 (`PST`, `GMT+9`)
* "`shortOffset`" 지역화된 GMT 형식 (`GMT-8`, `GMT+9`)
* "`longOffset`" 지역화된 긴 GMT 형식 (`GMT+0900`)
* "`shortGeneric`" 지역을 특정하지 않는 일반적인 형식 (`PT`)
* "`longGeneric`" 지역을 특정하지 않는 긴 일반적인 형식 (`Pacific Time`)

**참고:** 요구한 형식을 사용할 수 없을 경우 시간대 서식이 다른 형태로 대체될 수 있습니다. 예를 들어 지역을 특정하지 않는 서식의 경우 특정 국가나 도시 이름을 포함하지 않아야 하지만, "Los Angeles Time"처럼 필요할 경우 이름을 포함할 수 있습니다.

각 구성요소 속성의 기본값은 `undefined`입니다. 그러나 모든 속성이 `undefined`일 경우, `year`, `month`, `day`는 "`numeric`"으로 취급합니다.

예제
--

### DateTimeFormat 사용하기

로케일을 지정하지 않고 사용하면 기본 로케일 및 기본 옵션 서식을 적용한 문자열을 반환합니다.

```js
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// 매개변수 없이 toLocaleString() 호출한 결과는
// 구현체, 기본 로케일, 기본 시간대에 다라 달라짐
console.log(new Intl.DateTimeFormat().format(date));
// → ko-KR 로케일(언어)와 Asia/Seoul 시간대(UTC+0900)에서 "2012. 12. 20."
```

### timeStyle과 dateStyle 사용하기

다음 예제는 지역화된 숫자 서식의 예시를 보입니다. 어플리케이션의 사용자 인터페이스 언어에 맞는 서식을 적용하려면 `locales` 매개변수로 적절한 언어(와, 필요한 경우 대체 언어)를 제공하는걸 잊지 마세요.

```js
let o = new Intl.DateTimeFormat("en", {
  timeStyle: "short",
});
console.log(o.format(Date.now())); // "13:31 AM"

let o = new Intl.DateTimeFormat("en", {
  dateStyle: "short",
});
console.log(o.format(Date.now())); // "07/07/20"

let o = new Intl.DateTimeFormat("en", {
  timeStyle: "medium",
  dateStyle: "short",
});
console.log(o.format(Date.now())); // "07/07/20, 13:31:55 AM"
```

### timeZoneName 사용하기

`timeZoneName`을 사용하면 시간대도 결과에 포함할 수 있습니다.

```js
var date = Date.UTC(2021, 11, 17, 3, 0, 42);
const timezoneNames = [
  "short",
  "long",
  "shortOffset",
  "longOffset",
  "shortGeneric",
  "longGeneric",
];

for (const zoneName of timezoneNames) {
  var formatter = new Intl.DateTimeFormat("en-US", {
    timeZone: "America/Los\_Angeles",
    timeZoneName: zoneName,
  });
  console.log(zoneName + ": " + formatter.format(date));
}

// 예상 출력 결과:
// > "short: 12/16/2021, PST"
// > "long: 12/16/2021, Pacific Standard Time"
// > "shortOffset: 12/16/2021, GMT-8"
// > "longOffset: 12/16/2021, GMT-08:00"
// > "shortGeneric: 12/16/2021, PT"
// > "longGeneric: 12/16/2021, Pacific Time"
```

명세
--

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-intl-datetimeformat-constructor |

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

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

같이 보기
-----

* `Intl.DateTimeFormat`
* `Intl` (en-US)


Reflect.isExtensible() - JavaScript

Reflect.isExtensible()
======================

**`Reflect.isExtensible()`** 정적 메서드는 객체의 확장 가능 여부, 즉 속성을 추가할 수 있는지 판별합니다. `Object.isExtensible()`과 유사하지만 차이점도 있습니다.

시도해보기
-----

구문
--

```js
Reflect.isExtensible(target);
```

### 매개변수

`target`

확장 가능 여부를 판별할 대상 객체.

### 반환 값

객체의 확장 가능 여부를 나타내는 `Boolean`.

### 예외

`target`이 `Object`가 아니면 `TypeError`.

설명
--

`Reflect.isExtensible()` 메서드는 `Object.isExtensible()`와 유사하게, 객체에 새로운 속성을 추가할 수 있는지 판별합니다.

예제
--

### `Reflect.isExtensible()` 사용하기

`Object.isExtensible()`도 참고하세요.

```js
// 새로운 객체는 확장 가능
var empty = {};
Reflect.isExtensible(empty); // === true

// ...하지만 바꿀 수 있음
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // === false

// 봉인한 객체는 확장 불가능함
var sealed = Object.seal({});
Reflect.isExtensible(sealed); // === false

// 동결한 객체도 확장 불가능함
var frozen = Object.freeze({});
Reflect.isExtensible(frozen); // === false
```

### `Object.isExtensible()`과의 차이점

`Reflect.isExtensible()`은 첫 번째 매개변수가 원시값이면 `TypeError`를 던집니다. 반면 `Object.isExtensible()`은 우선 객체로 변환을 시도합니다.

```js
Reflect.isExtensible(1);
// TypeError: 1 is not an object

Object.isExtensible(1);
// false
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.isextensible |

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

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

같이 보기
-----

* `Reflect`
* `Object.isExtensible()`


Reflect.preventExtensions() - JavaScript

Reflect.preventExtensions()
===========================

**`Reflect.preventExtensions()`** 정적 메서드는 새로운 속성을 객체에 추가하지 못하도록 완전히 막습니다. 즉, 미래의 객체 확장을 막습니다. `Object.preventExtensions()`와 유사하지만 차이점도 있습니다.

시도해보기
-----

구문
--

```js
Reflect.preventExtensions(target);
```

### 매개변수

`target`

확장을 방지할 대상 객체.

### 반환 값

대상의 확장을 성공적으로 방지했는지 나타내는 `Boolean`.

### 예외

`target`이 `Object`가 아니면 `TypeError`.

설명
--

`Reflect.preventExtensions()` 메서드는 새로운 속성을 객체에 추가하지 못하도록 완전히 막습니다. 즉, 미래의 객체 확장을 막습니다. `Object.preventExtensions()`와 유사합니다.

예제
--

### `Reflect.preventExtensions()` 사용하기

`Object.preventExtensions()`도 참고하세요.

```js
// 객체는 기본적으로 확장 가능
var empty = {};
Reflect.isExtensible(empty); // === true

// ...하지만 바꿀 수 있음
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // === false
```

### `Object.preventExtensions()`와의 차이점

`Reflect.preventExtensions()`는 첫 번째 매개변수가 원시값이면 `TypeError`를 던집니다. 반면 `Object.preventExtensions()`는 우선 객체로 변환을 시도합니다.

```js
Reflect.preventExtensions(1);
// TypeError: 1 is not an object

Object.preventExtensions(1);
// 1
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.preventextensions |

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

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

같이 보기
-----

* `Reflect`
* `Object.isExtensible()`


Reflect.setPrototypeOf() - JavaScript

Reflect.setPrototypeOf()
========================

**`Reflect.setPrototypeOf()`** 정적 메서드는 주어진 객체의 프로토타입(내부 `[[Prototype]]` 속성)을 다른 객체나 `null`로 바꿉니다. 반환 값을 제외하면 `Object.setPrototypeOf()` (en-US) 메서드와 같습니다.

시도해보기
-----

구문
--

```js
Reflect.setPrototypeOf(target, prototype);
```

### 매개변수

`target`

프로토타입을 지정할 대상 객체.

`prototype`

대상 객체의 새로운 프로토타입. (객체 또는 `null`

### 반환 값

프로토타입 설정 성공 여부를 나타내는 `Boolean`.

### 예외

`target`이 `Object`가 아니거나, `prototype`이 객체도 `null`도 아니면 `TypeError`.

설명
--

`Reflect.setPrototypeOf()` 메서드는 주어진 객체의 프로토타입(즉, 내부 `[[Prototype]]` 속성)을 변경합니다.

예제
--

### `Reflect.setPrototypeOf()` 사용하기

```js
Reflect.setPrototypeOf({}, Object.prototype); // true

// It can change an object's [[Prototype]] to null.
Reflect.setPrototypeOf({}, null); // true

// Returns false if target is not extensible.
Reflect.setPrototypeOf(Object.freeze({}), null); // false

// Returns false if it cause a prototype chain cycle.
const target = {};
const proto = Object.create(target);
Reflect.setPrototypeOf(target, proto); // false
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.setprototypeof |

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

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

같이 보기
-----

* `Reflect`
* `Object.setPrototypeOf()` (en-US)


Reflect.getOwnPropertyDescriptor() - JavaScript

Reflect.getOwnPropertyDescriptor()
==================================

**`Reflect.getOwnPropertyDescriptor()`** 정적 메서드는 객체에 주어진 속성이 존재하면, 해당 속성의 서술자를 반환합니다. `Object.getOwnPropertyDescriptor()`와 유사합니다.

시도해보기
-----

구문
--

```js
Reflect.getOwnPropertyDescriptor(target, propertyKey);
```

### 매개변수

`target`

속성을 탐색할 객체.

`propertyKey`

자체 속성 서술자를 가져올 속성의 이름.

### 반환 값

대상 속성이 객체에 존재하면, 그 속성의 서술자. 존재하지 않으면 `undefined`.

### 예제

`target`이 `Object`가 아니면 `TypeError`.

설명
--

`Reflect.getOwnPropertyDescriptor` 메서드는 객체 속성의 서술자를 반환합니다. 만약 존재하지 않는 속성이라면 `undefined`를 대신 반환합니다. `Object.getOwnPropertyDescriptor()`와의 유일한 차이는 객체가 아닌 대상의 처리 방법입니다.

예제
--

### `Reflect.getOwnPropertyDescriptor()` 사용하기

```js
Reflect.getOwnPropertyDescriptor({ x: "hello" }, "x");
// {value: "hello", writable: true, enumerable: true, configurable: true}

Reflect.getOwnPropertyDescriptor({ x: "hello" }, "y");
// undefined

Reflect.getOwnPropertyDescriptor([], "length");
// {value: 0, writable: true, enumerable: false, configurable: false}
```

### `Object.getOwnPropertyDescriptor()`와의 차이점

`Reflect.getOwnPropertyDescriptor()`의 첫 번째 매개변수가 객체가 아니고 원시값이라면 `TypeError`가 발생합니다. 반면 `Object.getOwnPropertyDescriptor()`는 같은 상황에서 값을 우선 객체로 변환합니다.

```js
Reflect.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo" is not non-null object

Object.getOwnPropertyDescriptor("foo", 0);
// { value: "f", writable: false, enumerable: true, configurable: false }
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.getownpropertydescriptor |

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

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

같이 보기
-----

* `Reflect`
* `Object.getOwnPropertyDescriptor()`


Reflect.construct() - JavaScript

Reflect.construct()
===================

**`Reflect.construct()`** 정적 메서드는 `new` 연산자처럼 동작하는 함수입니다. `new target(...args)`를 호출하는 것과 같습니다. 추가 기능으로 다른 프로토타입을 지정할 수도 있습니다.

시도해보기
-----

구문
--

```js
Reflect.construct(target, argumentsList[, newTarget])
```

### 매개변수

`target`

호출할 대상 함수.

`argumentsList`

`target`의 매개변수로 전달할 배열형 객체.

`newTarget` Optional

프로토타입으로 사용할 생성자. `new.target` 연산자도 확인하세요. `newTarget`이 주어지지 않았을 땐 `target`을 사용합니다.

### 반환 값

`target`을 생성자로 하고 주어진 매개변수를 전달해 생성한 `target`(또는, 지정했다면 `newTarget`)의 새로운 인스턴스.

### 예외

`target` 또는 `newTarget`이 생성자가 아니면 `TypeError`.

설명
--

`Reflect.construct()`는 생성자를 가변 길이의 매개변수로 호출할 수 있습니다. (`new` 연산자와 전개 구문을 사용해도 가능합니다)

```js
var obj = new Foo(...args);
var obj = Reflect.construct(Foo, args);
```

### `Reflect.construct()` vs `Object.create()`

`Reflect`의 도입 이전에는 임의의 생성자와 프로토타입에 `Object.create()`를 사용해 객체를 생성할 수 있었습니다.

```js
function OneClass() {
  this.name = "one";
}

function OtherClass() {
  this.name = "other";
}

// Calling this:
var obj1 = Reflect.construct(OneClass, args, OtherClass);

// ...has the same result as this:
var obj2 = Object.create(OtherClass.prototype);
OneClass.apply(obj2, args);

console.log(obj1.name); // 'one'
console.log(obj2.name); // 'one'

console.log(obj1 instanceof OneClass); // false
console.log(obj2 instanceof OneClass); // false

console.log(obj1 instanceof OtherClass); // true
console.log(obj2 instanceof OtherClass); // true
```

그러나, 결과는 동일하더라도 과정에는 중요한 차이가 하나 존재합니다. `Object.create()`와 `Function.prototype.apply()`를 사용할 땐, 객체 생성에 `new` 키워드가 관여하지 않으므로 `new.target` 연산자가 `undefined`를 가리킵니다.

반면 `Reflect.construct()`를 호출하면, `newTarget`이 존재하면 `new.target` 연산자가 `newTarget`을, 아니면 `target`을 가리킵니다.

```js
function OneClass() {
  console.log("OneClass");
  console.log(new.target);
}
function OtherClass() {
  console.log("OtherClass");
  console.log(new.target);
}

var obj1 = Reflect.construct(OneClass, args);
// Output:
// OneClass
// function OneClass { ... }

var obj2 = Reflect.construct(OneClass, args, OtherClass);
// Output:
// OneClass
// function OtherClass { ... }

var obj3 = Object.create(OtherClass.prototype);
OneClass.apply(obj3, args);
// Output:
// OneClass
// undefined
```

예제
--

### `Reflect.construct()` 사용하기

```js
var d = Reflect.construct(Date, [1776, 6, 4]);
d instanceof Date; // true
d.getFullYear(); // 1776
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.construct |

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

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

같이 보기
-----

* `Reflect`
* `new`
* `new.target`


Reflect.ownKeys() - JavaScript

Reflect.ownKeys()
=================

**`Reflect.ownKeys()`** 정적 메서드는 대상 객체의 자체 속성 키를 배열로 반환합니다.

시도해보기
-----

구문
--

```js
Reflect.ownKeys(target);
```

### 매개변수

`target`

자체 키를 가져올 대상 객체.

### 반환 값

주어진 객체의 자체 속성 키를 담은 `Array`.

### 예외

`target`이 `Object`가 아니면 `TypeError`.

설명
--

The `Reflect.ownKeys()` 메서드는 대상 객체의 자체 속성 키를 배열로 반환합니다. 반환 값은 `Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))`와 동일합니다.

예제
--

### `Reflect.ownKeys()` 사용하기

```js
Reflect.ownKeys({ z: 3, y: 2, x: 1 }); // [ "z", "y", "x" ]
Reflect.ownKeys([]); // ["length"]

var sym = Symbol.for("comet");
var sym2 = Symbol.for("meteor");
var obj = {
  [sym]: 0,
  str: 0,
  773: 0,
  0: 0,
  [sym2]: 0,
  "-1": 0,
  8: 0,
  "second str": 0,
};
Reflect.ownKeys(obj);
// [ "0", "8", "773", "str", "-1", "second str", Symbol(comet), Symbol(meteor) ]
// Indexes in numeric order,
// strings in insertion order,
// symbols in insertion order
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.ownkeys |

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

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

같이 보기
-----

* `Reflect`
* `Object.getOwnPropertyNames()`


Reflect.has() - JavaScript

Reflect.has()
=============

**`Reflect.has()`** 정적 메서드는 `in` 연산자의 함수판입니다.

시도해보기
-----

구문
--

```js
Reflect.has(target, propertyKey);
```

### 매개변수

`target`

속성을 탐색할 객체.

`propertyKey`

탐색할 속성의 이름.

### 반환 값

객체가 속성을 가지고 있는지 나타내는 `Boolean`.

### 예외

`target`이 `Object`가 아니면 `TypeError`.

설명
--

`Reflect.has()` 메서드는 객체에 속성이 존재하는지 판별할 수 있습니다. `in` 연산자처럼 동작합니다.

예제
--

### `Reflect.has()` 사용하기

```js
Reflect.has({ x: 0 }, "x"); // true
Reflect.has({ x: 0 }, "y"); // false

// 프로토타입 체인에 존재하는 속성도 true 반환
Reflect.has({ x: 0 }, "toString");

// .has() 처리기 메서드를 가진 Proxy
obj = new Proxy(
  {},
  {
    has(t, k) {
      return k.startsWith("door");
    },
  },
);
Reflect.has(obj, "doorbell"); // true
Reflect.has(obj, "dormitory"); // false
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.has |

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

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

같이 보기
-----

* `Reflect`
* `in` 연산자


Reflect.get() - JavaScript

Reflect.get()
=============

**`Reflect.get()`** 정적 메서드는 객체의 속성을 가져오는 함수입니다. `target[propertyKey]`와 비슷합니다.

시도해보기
-----

구문
--

```js
Reflect.get(target, propertyKey[, receiver])
```

### 매개변수

`target`

속성을 가져올 대상 객체.

`propertyKey`

가져올 속성의 이름.

`receiver` Optional

대상 속성이 접근자라면 `this`의 값으로 사용할 값. `Proxy`와 함께 사용하면, 대상을 상속하는 객체를 사용할 수 있습니다.

### 반환 값

속성의 값.

### 예외

`target`이 `Object`가 아니면 `TypeError`.

설명
--

`Reflect.get` 메서드는 객체 속성의 값을 가져올 수 있습니다. 속성 접근자의 함수판이라고 할 수 있습니다.

예제
--

### `Reflect.get()` 사용하기

```js
// Object
var obj = { x: 1, y: 2 };
Reflect.get(obj, "x"); // 1

// Array
Reflect.get(["zero", "one"], 1); // "one"

// handler 매개변수와 Proxy
var x = { p: 1 };
var obj = new Proxy(x, {
  get(t, k, r) {
    return k + "bar";
  },
});
Reflect.get(obj, "foo"); // "foobar"
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.get |

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

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

같이 보기
-----

* `Reflect`
* 속성 접근자


Reflect.getPrototypeOf() - JavaScript

Reflect.getPrototypeOf()
========================

**`Reflect.getPrototypeOf()`** 정적 메서드는 주어진 객체의 프로토타입을 반환합니다. `Object.getPrototypeOf()`와 거의 동일합니다.

시도해보기
-----

구문
--

```js
Reflect.getPrototypeOf(target);
```

### 매개변수

`target`

프로토타입을 가져올 대상 객체.

### 반환 값

주어진 객체의 프로토타입. 상속한 속성이 없으면 `null`을 반환합니다.

### 예외

`target`이 `Object`가 아니면 `TypeError`.

설명
--

`Reflect.getPrototypeOf()` 메서드는 주어진 객체의 프로토타입(`[[Prototype]]` 내부 객체의 값 등)을 반환합니다.

예제
--

### `Reflect.getPrototypeOf()` 사용하기

```js
Reflect.getPrototypeOf({}); // Object.prototype
Reflect.getPrototypeOf(Object.prototype); // null
Reflect.getPrototypeOf(Object.create(null)); // null
```

### `Object.getPrototypeOf()`와 비교

```js
// 객체에는 동일한 결과
Object.getPrototypeOf({}); // Object.prototype
Reflect.getPrototypeOf({}); // Object.prototype

// ES5에서는 비객체 대상에서 모두 오류
Object.getPrototypeOf("foo"); // Throws TypeError
Reflect.getPrototypeOf("foo"); // Throws TypeError

// ES2015에서는 Reflect만 오류, Object는 객체로 변환
Object.getPrototypeOf("foo"); // String.prototype
Reflect.getPrototypeOf("foo"); // Throws TypeError

// ES2015 Object 동작을 따라하려면 객체 변환과정 필요
Reflect.getPrototypeOf(Object("foo")); // String.prototype
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.getprototypeof |

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

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

같이 보기
-----

* `Reflect`
* `Object.getPrototypeOf()`


Reflect.deleteProperty() - JavaScript

Reflect.deleteProperty()
========================

**`Reflect.deleteProperty()`** 정적 메서드는 속성을 제거할 수 있습니다. `delete` 연산자 (en-US)의 함수판이라고 할 수 있습니다.

시도해보기
-----

구문
--

```js
Reflect.deleteProperty(target, propertyKey);
```

### 매개변수

`target`

속성을 제거할 대상 객체.

`propertyKey`

제거할 속성의 이름.

### 반환 값

속성이 성공적으로 제거됐는지 나타내는 `Boolean`.

### Exceptions

`target`이 `Object`가 아니면 `TypeError`.

설명
--

`Reflect.deleteProperty` 메서드는 객체의 속성을 제거할 수 있습니다. 반환값은 속성의 제거 성공 여부를 나타내는 `Boolean`입니다. 비엄격 모드의 `delete` 연산자 (en-US)와 거의 동일합니다.

예제
--

### `Reflect.deleteProperty()` 사용하기

```js
var obj = { x: 1, y: 2 };
Reflect.deleteProperty(obj, "x"); // true
obj; // { y: 2 }

var arr = [1, 2, 3, 4, 5];
Reflect.deleteProperty(arr, "3"); // true
arr; // [1, 2, 3, , 5]

// 주어진 속성이 존재하지 않으면 true 반환
Reflect.deleteProperty({}, "foo"); // true

// 주어진 속성이 설정 불가능하면 false 반환
Reflect.deleteProperty(Object.freeze({ foo: 1 }), "foo"); // false
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.deleteproperty |

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

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

같이 보기
-----

* `Reflect`
* `delete` 연산자 (en-US)


Reflect.apply() - JavaScript

Reflect.apply()
===============

**`Reflect.apply()`** 정적 메서드는 대상 함수를 주어진 매개변수로 호출합니다.

시도해보기
-----

구문
--

```js
Reflect.apply(target, thisArgument, argumentsList);
```

### 매개변수

`target`

호출할 대상 함수.

`thisArgument`

호출에서 `target`의 `this`로 사용할 값.

`argumentsList`

`target`을 호출할 때 매개변수로 전달할 배열형 객체.

### 반환 값

주어진 `this` 값과 매개변수로 대상 함수를 호출한 결과.

### 예외

`target`이 호출 가능한 객체가 아니면 `TypeError`.

설명
--

ES5에서는 `Function.prototype.apply()` 메서드를 사용해, 함수를 호출할 때 `this` 값을 지정하거나 매개변수를 배열(또는 배열형 객체)에서 넘겨줄 수 있었습니다.

```js
Function.prototype.apply.call(Math.floor, undefined, [1.75]);
```

`Reflect.apply()` 메서드를 사용해 같은 작업을 더 쉽고 유려하게 수행할 수 있습니다.

예제
--

### `Reflect.apply()` 사용하기

```js
Reflect.apply(Math.floor, undefined, [1.75]);
// 1;

Reflect.apply(String.fromCharCode, undefined, [104, 101, 108, 108, 111]);
// "hello"

Reflect.apply(RegExp.prototype.exec, /ab/, ["confabulation"]).index;
// 4

Reflect.apply("".charAt, "ponies", [3]);
// "i"
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.apply |

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

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

같이 보기
-----

* `Reflect`
* `Function.prototype.apply()`


Reflect.set() - JavaScript

Reflect.set()
=============

**`Reflect.set()`** 정적 메서드는 객체 속성의 값을 설정합니다.

시도해보기
-----

구문
--

```js
Reflect.set(target, propertyKey, value[, receiver])
```

### 매개변수

`target`

속성의 값을 설정할 대상 객체.

`propertyKey`

값을 설정할 속성의 이름.

`value`

설정할 값.

`receiver` Optional

속성이 설정자일 경우, `this`로 사용할 값.

### 반환 값

값 설정의 성공 여부를 나타내는 `Boolean`.

### 예외

`target`이 `Object`가 아니면 `TypeError`.

설명
--

`Reflect.set()` 메서드는 객체 속성의 값을 설정할 수 있습니다. 속성 추가도 할 수 있으며, 함수라는 점을 제외하면 동작 방식은 속성 접근자와 같습니다.

예제
--

### `Reflect.set()` 사용하기

```js
// Object
var obj = {};
Reflect.set(obj, "prop", "value"); // true
obj.prop; // "value"

// Array
var arr = ["duck", "duck", "duck"];
Reflect.set(arr, 2, "goose"); // true
arr[2]; // "goose"

// 배열 자르기
Reflect.set(arr, "length", 1); // true
arr; // ["duck"];

// 매개변수를 하나만 제공하면 속성 키 이름은 문자열 "undefined", 값은 undefined
var obj = {};
Reflect.set(obj); // true
Reflect.getOwnPropertyDescriptor(obj, "undefined");
// { value: undefined, writable: true, enumerable: true, configurable: true }
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.set |

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

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

같이 보기
-----

* `Reflect`
* 속성 접근자


Reflect.defineProperty() - JavaScript

Reflect.defineProperty()
========================

**`Reflect.defineProperty()`** 정적 메서드는 `Object.defineProperty()`와 같은 동작을 하지만 `Boolean`을 반환합니다.

시도해보기
-----

구문
--

```js
Reflect.defineProperty(target, propertyKey, attributes);
```

### 매개변수

`target`

속성을 정의할 대상 객체.

`propertyKey`

정의하거나 수정할 속성의 이름.

`attributes`

정의하거나 수정하는 속성을 기술하는 객체.

### 반환 값

속성이 성공적으로 정의됐는지 나타내는 `Boolean`.

### 예외

`target`이 `Object`가 아니면 `TypeError`.

설명
--

`Reflect.defineProperty` 메서드는 객체에 속성을 정교하게 추가하거나 수정할 수 있습니다. 자세한 내용은 유사한 메서드인 `Object.defineProperty`를 참고하세요. `Object.defineProperty`는 성공 시 대상 객체를 반환하고 실패하면 `TypeError`를 던지지만, `Reflect.defineProperty`는 성공 여부를 나타내는 `Boolean`을 반환합니다.

예제
--

### `Reflect.defineProperty()` 사용하기

```js
var obj = {};
Reflect.defineProperty(obj, "x", { value: 7 }); // true
obj.x; // 7
```

### 속성 정의의 성공 여부 알아내기

`Object.defineProperty`는 성공 시 객체를 반환하고, 실패 시 `TypeError`를 던지므로 속성 정의 과정에 발생할 수 있는 오류를 `try...catch` (en-US) 블록으로 잡아야 합니다. 반면 `Reflect.defineProperty`는 성공 여부를 나타내는 `Boolean`을 반환하므로, 간단하게 `if...else` 블록만 사용하면 됩니다.

```js
if (Reflect.defineProperty(target, property, attributes)) {
  // 성공
} else {
  // 실패
}
```

명세
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-reflect.defineproperty |

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

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

같이 보기
-----

* `Reflect`
* `Object.defineProperty()`