Temporal.PlainYearMonth.prototype.valueOf()
valueOf()
方法,针对 Temporal.PlainYearMonth
实例,会抛出一个 TypeError
。这可以防止 Temporal.PlainYearMonth
实例在算术或比较操作中被 隐式转换为原始类型。
语法
js
valueOf()
参数
无。
返回值
无。
异常
TypeError
-
总是抛出。
描述
由于 原始类型转换 和 数字转换 都会在调用 toString()
之前调用 valueOf()
,如果 valueOf()
不存在,那么像 yearMonth1 > yearMonth2
这样的表达式会隐式地将它们作为字符串进行比较,这可能会产生意外的结果。通过抛出 TypeError
,Temporal.PlainYearMonth
实例可以防止这种隐式转换。你需要使用 Temporal.PlainYearMonth.prototype.toString()
显式地将它们转换为字符串,或者使用 Temporal.PlainYearMonth.compare()
静态方法来比较它们。
示例
Temporal.PlainYearMonth 上的算术和比较操作
Temporal.PlainYearMonth
实例上的所有算术和比较操作都应该使用专门的方法,或者显式地将它们转换为原始类型。
js
const ym1 = Temporal.PlainYearMonth.from("2021-01");
const ym2 = Temporal.PlainYearMonth.from("2021-07");
ym1 > ym2; // TypeError: can't convert PlainYearMonth to primitive type
Temporal.PlainYearMonth.compare(ym1, ym2); // -1
ym2 - ym1; // TypeError: can't convert PlainYearMonth to primitive type
ym2.since(ym1).toString(); // "P6M"
规范
规范 |
---|
Temporal # sec-temporal.plainyearmonth.prototype.valueof |
浏览器兼容性
加载中…