recursal/MDN huggingface dataset:
Promise.prototype.finally()
===========================

**`finally()`** 方法會回傳一個 `Promise`。當 promise 被 settled 後，無論其結果是 fulfilled 還是 rejected ，都會執行指定的回呼函數。它提供了一個讓 `Promise` 在被確認後，無論是 fulfilled 或是 rejected 都會執行某些程式碼的一種手段。

這樣可以避免你在 promise 的 `then()` 和 `catch()` 重複處理相同的程式碼。

Syntax
------


```js
p.finally(onFinally);

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

### Parameters

`onFinally`

當 `Promise` settled 後呼叫的 `Function` (en-US)。

### Return value

回傳 `Promise` 當 `finally` 的處理函數 `onFinally` 被指定時。

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

當你希望在 promise settled 後且不關心它的結果為何時，執行一些處理或清理的工作， `finally()` 方法會很有幫助。

`finally()` 方法非常類似於 `.then(onFinally, onFinally)` 的呼叫方式，但仍有一些差異：

* 當建立行內的函數時，可以只傳遞一次，從而避免重複宣告或為它宣告變數。
* `finally` 的回呼函數並不會接收到任何引數，因其沒有可靠的方式來確認 promise 是被 fulfilled 還是 rejected 。它的使用情境僅適用於當你*不關心* rejection 的原因或 fulfillment 的值，因此無須提供。範例：
    + 與 `Promise.resolve(2).then(() => {}, () => {})`（將被 resolved 為`undefined`）不同，`Promise.resolve(2).finally(() => {})` 將被 resolved 為`2`。
    + 同樣的，與 `Promise.reject(3).then(() => {}, () => {})`（將 fulfilled 為`undefined`）不同，`Promise.reject(3).finally(() => {})` 將被 rejected 為`3`。

**備註：** 在 finally 回呼中使用 throw（或回傳 rejected promise）會導致新的 promise 被 reject，reject 的原因則是呼叫 throw() 時所指定的值。

範例
--


```js
let isLoading = true;

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

規範
--

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

瀏覽器相容性
------

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

參見
--

* `Promise`
* `Promise.prototype.then()`
* `Promise.prototype.catch()`
Promise.reject()
================

**`Promise.reject(reason)`** 方法回傳一個以 `reason` 拒絕的 `Promise` 物件。

語法
--


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

### 參數

reason

`Promise` 的失敗訊息。

### 回傳值

一個以 `reason` 拒絕的 `Promise`。

描述
--

靜態函式 `Promise.reject` 回傳一個被拒絕的 `Promise。由於除錯目的及選擇性錯誤捕捉（selective error catching），使`用一個 `instanceof` `Error` (en-US) 作為 reason 是很有幫助的。

範例
--

### 使用靜態方法 Promise.reject()


```js
Promise.reject(new Error("fail")).then(
  function (error) {
    // not called
  },
  function (error) {
    console.log(error); // Stacktrace
  },
);
```

規範
--

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

瀏覽器相容性
------

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

參見
--

* `Promise`
* Selective error catching using the BlueBird Promise library
Function.prototype.call
=======================

使用給定的 `this` 參數以及分別給定的參數來呼叫某個函數

**備註：** 此函數的所有語法大致上與 `apply()` (en-US) 相同，他們基本上不同處只有 `call()` 接受一連串的參數，而 `apply()` 單一的 array 作為參數


| Function (en-US)物件的方法 |
| --- |
| 被實作於 | JavaScript 1.3 |
| ECMAScript 版本 | ECMAScript 第三版 |

語法
--


```js
fun.call(thisArg[, arg1[, arg2[, ...]]])
```

### 參數

`thisArg`

呼叫\*`fun`\*時提供的`this`值。 注意，它可能是一個無法在函數內看到的值：若這個函數是在非嚴苛模式( non-strict mode (en-US) ), `null` `、undefined` 將會被置換成全域變數，而原生型態的值將會被封裝

`arg1, arg2, ...`

其他參數

描述
--

你可以在呼叫一個現存的函數時，使用不一樣的 `this` 物件。`this` 會參照到目前的物件，呼叫的物件上

使用 `call`，你可以實作函數一次，然後在其他的物件上直接繼承它，而不用在新的物件上重寫該函數

範例
--

### 使用 `call` 來串接物件上的建構子

你可以使用 `call` 來串接其他物件的建構子，就像 Java。下面的例子中，`Product` 物件的建構子定義了兩個參數 `name` 以及 `price`。其他函數 `Food` 及 `Toy` 引用了 `Product` 並傳入 `this`、`name` 和 `price`。Product 初始化它的屬性 `name` 和 `price`，而兩個子函數則定義了 `category`。


```js
function Product(name, price) {
  this.name = name;
  this.price = price;

  if (price < 0)
    throw RangeError(
      'Cannot create product "' + name + '" with a negative price',
    );
  return this;
}

function Food(name, price) {
  Product.call(this, name, price);
  this.category = "food";
}
Food.prototype = new Product();

function Toy(name, price) {
  Product.call(this, name, price);
  this.category = "toy";
}
Toy.prototype = new Product();

var cheese = new Food("feta", 5);
var fun = new Toy("robot", 40);
```

### 使用 `call` 來呼叫匿名的函數

下面這個簡易的例子中，我們做了一個匿名的函數，並用 `call` 來讓它應用在每個在串列中的物件中. 這個匿名函數的主要用途是加入一個 print 函數到每個物件上，這個函數可以印出每個物件的 index 指標。 傳入物件作為 `this` 的值並不是必要的，但他有解釋的用途。


```js
var animals = [
  { species: "Lion", name: "King" },
  { species: "Whale", name: "Fail" },
];

for (var i = 0; i < animals.length; i++) {
  (function (i) {
    this.print = function () {
      console.log("#" + i + " " + this.species + ": " + this.name);
    };
    this.print();
  }).call(animals[i], i);
}
```

規範
--

| Specification |
| --- |
| ECMAScript Language Specification # sec-function.prototype.call |

瀏覽器相容性
------

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

參見
--

* apply (en-US)
Function.length
===============

**`length`** property 表示該 function 預期被傳入的參數數量

| `Function.length` 的屬性特性 |
| --- |
| 可寫 | 否 |
| 可列舉 | 否 |
| 可配置 | 是 |

描述
--

`length` 是 function 物件的一個 property，表示該 function 預期被傳入的參數數量，這個數量並不包含 rest parameter (en-US) 且只包涵第一個預設參數(Default Parameters)前的參數。相較之下 `arguments.length` (en-US) 是 function 內部的物件，會提供真正傳進 function 中的參數數量。

### `Function` 建構子的 data property

`Function` (en-US) 建構子本身就是一個 `Function` (en-US) 物件。其 `length` data property 的值為 1。此 property 的 attributes 包含: Writable: `false`, Enumerable: `false`, Configurable: `true`.

### `Function` prototype 物件的 property

`Function` (en-US) prototype 物件的 length property 其值為 0。

範例
--


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

console.log(function () {}.length); /\* 0 \*/
console.log(function (a) {}.length); /\* 1 \*/
console.log(function (a, b) {}.length); /\* 2 以此類推. \*/

console.log(function (...args) {}.length); /\* 0, rest parameter 不包含在內 \*/

console.log(function (a, b = 1, c) {}.length); /\* 1 \*/
// 只有在預設參數前的參數會被算到，也就是只有 a 會被視為必須傳入的參數
// 而 c 將被預設為 undefined
```

規範
--

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

瀏覽器相容性
------

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

參見
--

* `Function` (en-US)
Date.prototype.valueOf()
========================

**`valueOf()`** 方法回傳 `Date` 物件的原始值。

嘗試一下
----

語法
--


```js
valueOf()
```

### 返回值

從 1970 年 1 月 1 日 00:00:00 UTC 至給定日期之間的毫秒數，若為無效日期則回傳 `NaN` 。

描述
--

`valueOf()` 方法以數字型別回傳一 `Date` 物件的原始值，亦即自 1970 年 1 月 1 日 00:00:00 UTC 起所經過的毫秒數。

此方法在功能上相當於 `Date.prototype.getTime()` 。

通常此方法由 JavaScript 內部呼叫，而非明確寫在程式碼中。

範例
--

### 使用 valueOf()


```js
const x = new Date(56, 6, 17);
const myVar = x.valueOf(); // 指派 -424713600000 至 myVar
```

規範
--

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

瀏覽器相容性
------

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

參見
--

* `Object.prototype.valueOf()` (en-US)
* `Date.prototype.getTime()`
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
const 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.getUTCMinutes()
==============================

**`getUTCMinutes()`** 方法根據世界時回傳指定日期的分鐘數。

嘗試一下
----

語法
--


```js
getUTCMinutes()
```

### 返回值

若 `Date` 物件為有效日期，則根據 UTC 時間回傳一個表示分鐘數、介於 0 至 59 之間的整數；若為無效日期，則回傳 `Number.NaN()` (en-US)。

範例
--

### 使用 getUTCMinutes()

下列範例指派當前時間的分鐘至變數 `minutes`。


```js
const today = new Date();
const 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.

參見
--

* `Date.prototype.getMinutes()`
* `Date.prototype.setUTCMinutes()` (en-US)
Date.prototype.getMilliseconds()
================================

**`getMilliseconds()`** 方法基於本地時區回傳指定日期的毫秒數。

嘗試一下
----

語法
--


```js
getMilliseconds()
```

### 返回值

一個基於本地時區表示指定日期的毫秒數、介於 0 至 999 的整數值。

範例
--

### 使用 getMilliseconds()

下列範例將當前時間的毫秒數指派給變數 `milliseconds`。


```js
const today = new Date();
const 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()` (en-US)
Date.prototype.getSeconds()
===========================

**`getSeconds()`** 方法基於本地時區回傳指定日期的秒數。

嘗試一下
----

語法
--


```js
getSeconds()
```

### 返回值

一個基於本地時區表示指定日期的秒數、介於 0 至 59 的整數值。

範例
--

### 使用 getSeconds()

下方第二行陳述式將 `Date` 物件 `xmas95` 的值 30，指派給變數 `seconds`。


```js
const xmas95 = new Date("December 25, 1995 23:15:30");
const seconds = xmas95.getSeconds();

console.log(seconds); // 30
```

規範
--

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

瀏覽器相容性
------

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

參見
--

* `Date.prototype.getUTCSeconds()`
* `Date.prototype.setSeconds()` (en-US)
Date.prototype.setHours()
=========================

**`setHours()`** 方法基於本地時區設置指定日期的小時，並回傳自 1970 年 1 月 1 日 00:00:00 UTC 起至更新的 `Date` 實例所表示的時間為止，共經過的毫秒數。

嘗試一下
----

語法
--


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

### 參數

`hoursValue`

表示小時，理想上為介於 0 至 23 之間的整數。若傳入的值大於 23，溢出時數會增加日期時間。

`minutesValue`

可選的。表示分鐘，理想上為介於 0 至 59 之間的整數。若傳入的值大於 59，溢出分鐘數會增加日期時間。

`secondsValue`

可選的。表示秒，理想上為介於 0 至 59 之間的整數。若傳入的值大於 59，溢出秒數會增加日期時間。若給定 `secondsValue`，則必須同時給定 `minutesValue` 參數值。

`msValue`

可選的。表示毫秒，理想上為介於 0 至 999 之間的數。若傳入的值大於 999，溢出毫秒數會增加日期時間。若給定 `msValue` 的值，則必須同時給定 `minutesValue` 與 `secondsValue` 參數值。

### 返回值

1970 年 1 月 1 日 00:00:00 UTC 與更新日期之間的毫秒差異數。

描述
--

如果沒有指明 `minutesValue`、`secondsValue` 與 `msValue` 參數值，則會使用 `getMinutes()`、`getSeconds()`、`getMilliseconds()` 方法回傳的值。

如果給定的參數值超出預期範圍，`setHours()` 會相對應地更新 `Date` 物件的日期資訊。例如，`secondsValue` 傳入 100 ，分鐘數將增加 1（`minutesValue + 1`）、其餘的 40 則計入秒數。

範例
--

### 使用 setHours()


```js
const 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.

參見
--

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

**`getDay()`** 方法會根據當地時間將指定日期返回一星期中的第幾天，其中 0 代表星期日。 在當月的某天可以參考`Date.prototype.getDate()` (en-US)。

嘗試一下
----

語法
--
```

dateObj.getDay()
```

### 返回值

返回一個整數，數值介於 0 到 6 之間，取決於當地時間對應出指定日期為星期幾:0 代表星期日，1 代表星期一，2 代表星期二，依此類推。

範例
--

### 使用 `getDay()`

下面第二行表示根據日期對象'Xmas95'的值，把 1 賦值給'weekday'。則 1995 年 12 月 25 日是星期一。


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

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


**備註：** 如果需要，可以使用`Intl.DateTimeFormat` (en-US)加上`options`參數來獲取星期幾全名。使使用此方法能輕鬆做出各種國際語言：


```js
var options = { weekday: "long" };
console.log(new Intl.DateTimeFormat("en-US", options).format(Xmas95));
// Monday
console.log(new Intl.DateTimeFormat("de-DE", options).format(Xmas95));
// Montag
```


規範
--

| 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()` (en-US)
* `Date.prototype.getUTCDay()` (en-US)
* `Date.prototype.setDate()` (en-US)
Date.prototype.getUTCHours()
============================

**`getUTCHours()`** 方法根據世界時回傳指定日期的小時數。

嘗試一下
----

語法
--


```js
getUTCHours()
```

### 返回值

若 `Date` 物件為有效日期，則根據 UTC 時間回傳一個表示小時、介於 0 至 23 之間的整數；若為無效日期，則回傳 `Number.NaN()` (en-US)。

範例
--

### 使用 getUTCHours()

下列範例指派當前時間的小時至變數 `hours`。


```js
const today = new Date();
const hours = today.getUTCHours();
```

規範
--

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

瀏覽器相容性
------

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

參見
--

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

**`getTime()`** 方法回傳自 1970 年 1 月 1 日 00:00:00 UTC 起經過的毫秒數。

你可以透過此方法指派一日期與時間至另一 `Date` 物件。這個方法在功能上與 `valueOf()` 相同。

嘗試一下
----

語法
--


```js
getTime()
```

### 返回值

一個表示自 1970 年 1 月 1 日 00:00:00 UTC 至給定日期為止，所經過的毫秒數。

描述
--

`new Date().getTime()` 的精確度可能會依瀏覽器設定而做取捨，以防止時序攻擊（timing attack）與指紋辨識（fingerprinting）。如 Firefox 預設會開啟 `privacy.reduceTimerPrecision`，在 Firefox 59 預設為 20µs、Firefox 60 為 2ms。


```js
// 在 Firefox 60 中降低的時間精確度（2ms）
new Date().getTime();
// 1519211809934
// 1519211810362
// 1519211811670
// …

// 啟用 `privacy.resistFingerprinting` 而降低的時間精確度
new Date().getTime();
// 1519129853500
// 1519129858900
// 1519129864400
// …
```


 Firefox 內也可以啟用 `privacy.resistFingerprinting`，將擇 100ms 或
 `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` 的值當中較大者調整精確度。

範例
--

### 使用 `getTime()` 複製日期

建構一個相同時間值的日期物件。


```js
// 因為月份是從零開始，故 birthday 將為 1995 年 1 月 10 日
const birthday = new Date(1994, 12, 10);
const copy = new Date();
copy.setTime(birthday.getTime());
```

### 測量執行時間

在兩個新建立的 `Date` 物件接連呼叫 `getTime()` 方法，並相減兩者返回時間。可透過此法計算某些操作的執行時間。參見 `Date.now()` 以避免產生非必要的 `Date` 物件。


```js
let end, start;

start = new Date();
for (let i = 0; i < 1000; i++) {
  Math.sqrt(i);
}
end = new Date();

console.log(`Operation took ${end.getTime() - start.getTime()} msec`);
```

規範
--

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

瀏覽器相容性
------

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

參見
--

* `Date.prototype.setTime()`
* `Date.prototype.valueOf()`
* `Date.now()`
Date.prototype.setTime()
========================

**`setTime()`** 方法將從 1970 年 01 月 01 日 00:00:00 UTC 起所經過的毫秒數設置為 `Date` 物件的值。

嘗試一下
----

語法
--


```js
setTime(timeValue)
```

### 參數

`timeValue`

一個整數，表示自 1970 年 01 月 01 日 00:00:00 UTC 起所經過的毫秒數。

### 返回值

1970 年 01 月 01 日 00:00:00 UTC 與更新日期之間的毫秒數（實際上是參數值）。

描述
--

以 `setTime()` 方法指派一日期與時間至另一 `Date` 物件。

範例
--

### 使用 setTime()


```js
const theBigDay = new Date("July 1, 1999");
const sameAsBigDay = new Date();
sameAsBigDay.setTime(theBigDay.getTime());
```

規範
--

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

瀏覽器相容性
------

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

參見
--

* `Date.prototype.getTime()`
* `Date.prototype.setUTCHours()`
Date.now()
==========

**`Date.now()`** 方法回傳自 1970/01/01 00:00:00 UTC 起經過的毫秒數。

格式
--
```

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

### 回傳值

一個代表由經 UNIX 紀元起經過的毫秒數值（`Number`）。

描述
--

由於 `now()` 是 `Date` 的靜態方法，你只能用 `Date.now()` 的方式呼叫它。

補完
--

這個函數是 ECMA-262 第 5 版的標準。 對於未更新支援此方法的引擎，可以利用底下的程式補上：


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

規範
--

| 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) — 提供亞毫秒級的時間戳記，作為評估網頁效能的解決方案。
* `console.time()` (en-US) / `console.timeEnd()` (en-US)
Date.prototype.getMinutes()
===========================

**`getMinutes()`** 方法基於本地時區回傳指定日期的分鐘數。

嘗試一下
----

語法
--


```js
getMinutes()
```

### 返回值

一個基於本地時區表示指定日期的分鐘數、介於 0 至 59 的整數值。

範例
--

### 使用 getMinutes()

下方第二行陳述式將 `Date` 物件 `xmas95` 的值 15，指派給變數 `minutes`。


```js
const xmas95 = new Date("December 25, 1995 23:15:30");
const 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()` (en-US)
Date.prototype.getUTCMilliseconds()
===================================

**`getUTCMilliseconds()`** 方法根據世界時回傳指定日期的毫秒數。

嘗試一下
----

語法
--


```js
getUTCMilliseconds()
```

### 返回值

若 `Date` 物件為有效日期，則根據 UTC 時間回傳一個表示毫秒數、介於 0 至 999 之間的整數；若為無效日期，則回傳 `Number.NaN()` (en-US)。

別與 Unix 時間搞混了。應使用 `Date.prototype.getTime()` 方法取得自 1970/01/01 起經過的毫秒數。

範例
--

### 使用 getUTCMilliseconds()

下列範例指派當前時間的毫秒數至變數 `milliseconds` 。


```js
const today = new Date();
const 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.

參見
--

* `Date.prototype.getMilliseconds()`
* `Date.prototype.setUTCMilliseconds()` (en-US)
Date.UTC()
==========

**`Date.UTC()`** 方法接受與建構子相同長度的參數，將參數視為通用時間（UTC）來計算回傳由 1970-01-01 00:00:00 UTC 所經過的毫秒數。

格式
--
```

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

### 參數

`year`

1900 年後的年份。

`month`

月份，介於 0 到 11 之間。

`day`

選用。月份中的日期，介於 1 到 31 之間。

`hour`

選用。小時，介於 0 到 23 之間。

`minute`

選用。分鐘數，介於 0 到 59 之間。

`second`

選用。秒數，介於 0 到 59 之間。

`millisecond`

選用。毫秒數 0 到 999 之間。

### 回傳值

得到傳入這個 `Date` 方法的參數所代表時間，與 1970-01-01 00:00:00 UTC 相差的毫秒數。

描述
--

`UTC()` 取得以逗號分隔的時間參數，回傳 1970-01-01 00:00:00 UTC 與該時間相差的毫秒數。

你應該指定完成的年份資料，例如： 1998。如果一個 0 到 99 的年份被指定，這個方法會將它轉換為 20 世紀的年份（變為 19xx 年），例如你傳入 95 ，則會被當作 1995 年被指定。

這個 `UTC()` 方法與 `Date` 建構子有兩個地方不同。

* `Date.UTC()` 使用 UTC 時區而不是當地時區。
* `Date.UTC()` 回傳一個數值而不是 `Date` 物件。

當你指定參數超出預期的範圍， UTC( ) 方法會去調整其它的參數使之成立。比如如果你指定月份為 15 ，年份將被加 1 ，以 3 作為傳入的月份。

因為 UTC( ) 是 `Date` 的一個靜態方法，只能使用 `Date.UTC()` 的方式呼叫，而不能由建立出來的 `Date` 物件去執行它。

範例
--

### 使用 `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.parse()`
Date.prototype.getUTCSeconds()
==============================

**`getUTCSeconds()`** 方法根據世界時回傳指定日期的秒數。

嘗試一下
----

語法
--


```js
getUTCSeconds()
```

### 返回值

若 `Date` 物件為有效日期，則根據 UTC 時間回傳一個表示秒數、介於 0 至 59 之間的整數；若為無效日期，則回傳 `Number.NaN()` (en-US)。

範例
--

### 使用 getUTCSeconds()

下列範例指派當前時間的秒數至變數 `seconds`。


```js
const today = new Date();
const seconds = today.getUTCSeconds();
```

規範
--

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

瀏覽器相容性
------

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

參見
--

* `Date.prototype.getSeconds()`
* `Date.prototype.setUTCSeconds()` (en-US)
Date.prototype.getHours()
=========================

**`getHours()`** 方法基於本地時區回傳指定日期的小時數。

嘗試一下
----

語法
--


```js
getHours()
```

### 返回值

一個基於本地時區表示指定日期的小時、介於 0 至 23 的整數值。

範例
--

### 使用 getHours()

下方第二行陳述式將 `Date` 物件 `xmas95` 的值 23，指派給變數 `hours`。


```js
const xmas95 = new Date("December 25, 1995 23:15:30");
const 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()`
Number.prototype.toFixed()
==========================

**`toFixed()`** 方法會使用定點小數表示法（fixed-point notation）來格式化數字。

嘗試一下
----

語法
--


```js
numObj.toFixed([digits])
```

### 參數

`digits 小數位`

選擇性輸入。顯示數值至多少個小數點，範圍由 0 到 20 之間，執行時或可支援非常大範圍的數值。如果無輸入會默認做 0。

### 回傳值

一個代表以定點小數表示法（fixed-point notation）格式化數字後的字串。

### 例外

`RangeError`

If `digits` is too small or too large. Values between 0 and 100, inclusive, will not cause a `RangeError`. Implementations are allowed to support larger and smaller values as chosen.

`TypeError` (en-US)

If this method is invoked on an object that is not a `Number`.

說明
--

**`toFixed()`** returns a string representation of `numObj` that does not use exponential notation and has exactly `digits` digits after the decimal place. The number is rounded if necessary, and the fractional part is padded with zeros if necessary so that it has the specified length. If `numObj` is greater than `1e+21`, this method simply calls `Number.prototype.toString()` (en-US) and returns a string in exponential notation.

範例
--

### Using `toFixed`


```js
var numObj = 12345.6789;

numObj.toFixed(); // Returns '12346': note rounding, no fractional part
numObj.toFixed(1); // Returns '12345.7': note rounding
numObj.toFixed(6); // Returns '12345.678900': note added zeros
(1.23e20).toFixed(2); // Returns '123000000000000000000.00'
(1.23e-10).toFixed(2); // Returns '0.00'
(2.34).toFixed(1); // Returns '2.3'
(2.35).toFixed(1); // Returns '2.4'. Note that it rounds up in this case.
-(2.34).toFixed(1); // Returns -2.3 (due to operator precedence, negative number literals don't return a string...)
(-2.34).toFixed(1); // Returns '-2.3' (...unless you use parentheses)
```

規範
--

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

瀏覽器相容性
------

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

參見
--

* `Number.prototype.toExponential()`
* `Number.prototype.toPrecision()` (en-US)
* `Number.prototype.toString()` (en-US)