Temporal.Duration.prototype.valueOf()

可用性有限

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

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

valueOf() 方法 Temporal.Duration 例項會丟擲一個 TypeError,這可以防止 Temporal.Duration 例項在算術或比較操作中被隱式轉換為原始型別

語法

js
valueOf()

引數

無。

返回值

無。

異常

TypeError

總是丟擲。

描述

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

示例

Temporal.Duration 的算術和比較操作

Temporal.Duration 例項的所有算術和比較操作都應該使用專門的方法,或者顯式地將它們轉換為原始型別。

js
const duration1 = Temporal.Duration.from({ seconds: 3 });
const duration2 = Temporal.Duration.from({ minutes: 1 });
duration1 > duration2; // TypeError: can't convert Duration to primitive type
duration1.total("seconds") > duration2.total("seconds"); // false
Temporal.Duration.compare(duration1, duration2); // -1

duration1 + duration2; // TypeError: can't convert Duration to primitive type
duration1.total("seconds") + duration2.total("seconds"); // 63
duration1.add(duration2).toString(); // "PT1M3S"

規範

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

瀏覽器相容性

另見