Temporal.ZonedDateTime.prototype.valueOf()

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

Temporal.ZonedDateTime 例項的 valueOf() 方法會丟擲 TypeError,這會阻止 Temporal.ZonedDateTime 例項在算術或比較操作中被隱式轉換為原始值

語法

js
valueOf()

引數

無。

返回值

無。

異常

TypeError

總是丟擲。

描述

由於原始值轉換數字轉換都會在 toString() 之前呼叫 valueOf(),如果 valueOf() 不存在,那麼像 yearMonth1 > yearMonth2 這樣的表示式會將它們隱式地作為字串進行比較,這可能會導致意想不到的結果。透過丟擲 TypeErrorTemporal.ZonedDateTime 例項可以防止此類隱式轉換。你需要使用 Temporal.ZonedDateTime.prototype.epochNanoseconds 將它們顯式轉換為數字,或者使用 Temporal.ZonedDateTime.compare() 靜態方法來比較它們。

示例

Temporal.ZonedDateTime 上的算術和比較操作

所有針對 Temporal.ZonedDateTime 例項的算術和比較操作都應使用專用方法或顯式將其轉換為原始值。

js
const zdt1 = Temporal.ZonedDateTime.from(
  "2022-01-01T00:00:00[America/New_York]",
);
const zdt2 = Temporal.ZonedDateTime.from(
  "2022-07-01T00:00:00[America/New_York]",
);
zdt1 > zdt2; // TypeError: can't convert ZonedDateTime to primitive type
Temporal.ZonedDateTime.compare(zdt1, zdt2); // -1

zdt2 - zdt1; // TypeError: can't convert ZonedDateTime to primitive type
zdt2.since(zdt1).toString(); // "PT4343H"

規範

規範
Temporal
# sec-temporal.zoneddatetime.prototype.valueof

瀏覽器相容性

另見