Temporal.Duration.prototype.valueOf()
Базовый уровень Ограниченная доступность
Эта функция не относится к базовому уровню, поскольку она не работает в некоторых из наиболее широко используемых браузеров.
Метод valueOf() экземпляров Temporal.Duration вызывает TypeError, что предотвращает неявное преобразование в примитивы экземпляров Temporal.Duration при использовании в арифметических операциях или операциях сравнения.
Синтаксис
valueOf()
Параметры
Нет.
Возвращаемое значение
Нет.
Исключения
-
TypeError - Всегда вызывается.
Описание
Поскольку и преобразование в примитив, и преобразование в число вызывают valueOf() до toString(), если valueOf() отсутствует, то выражение, подобное duration1 > duration2, неявно сравнивало бы их как строки, что может привести к неожиданным результатам, например, "PT3S" > "PT1M". Вызывая TypeError, экземпляры Temporal.Duration предотвращают такие неявные преобразования. Вам необходимо явно преобразовать их в числа, используя Temporal.Duration.prototype.total(), или использовать статический метод Temporal.Duration.compare() для их сравнения.
Примеры
Арифметические операции и операции сравнения для Temporal.Duration
Все арифметические операции и операции сравнения для экземпляров Temporal.Duration должны использовать специальные методы или явно преобразовывать их в примитивы.
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 |
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
valueOf |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
Смотрите также
Temporal.DurationTemporal.Duration.prototype.toString()Temporal.Duration.prototype.toJSON()Temporal.Duration.prototype.toLocaleString()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/Duration/valueOf