Temporal.ZonedDateTime.prototype.valueOf()
Temporal.ZonedDateTime
实例的 valueOf()
方法会抛出 TypeError
,这会阻止 Temporal.ZonedDateTime
实例在算术或比较操作中被隐式转换为原始值。
语法
js
valueOf()
参数
无。
返回值
无。
异常
TypeError
-
总是抛出。
描述
由于原始值转换和数字转换都会在 toString()
之前调用 valueOf()
,如果 valueOf()
不存在,那么像 yearMonth1 > yearMonth2
这样的表达式会将它们隐式地作为字符串进行比较,这可能会导致意想不到的结果。通过抛出 TypeError
,Temporal.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 |
浏览器兼容性
加载中…