用一元“+”运算符为新日期添加前缀的目的是啥? [复制]

Posted

技术标签:

【中文标题】用一元“+”运算符为新日期添加前缀的目的是啥? [复制]【英文标题】:What is the purpose of prefixing a new Date with the unary `+` operator? [duplicate]用一元“+”运算符为新日期添加前缀的目的是什么? [复制] 【发布时间】:2020-01-03 21:07:36 【问题描述】:

我正在移植一些 javascript 代码(不是我最擅长的语言)并且遇到了这个:

Common._nowStartTime = +(new Date());

Common 是一个模块,nowStartTime 是该模块的一个属性。我不确定表达式的右手是什么意思?为什么要使用一元 + 运算符前缀?

【问题讨论】:

要将其转换为数字? 【参考方案1】:

根据MDN:

一元加号运算符在其操作数之前并计算其操作数,但尝试将其转换为数字(如果尚未转换)。

它通常用作将值转换为数字的简写。通过调用值的.valueOf() 进行转换。来自 MDN:

简写符号是在变量前面加上一个加号:+"5"

Date 实现了自己的 Date.prototype.valueOf() 记录的 here:

此方法在功能上等同于 Date.prototype.getTime() 方法。

所以结果实际上是这段代码的简写:

Common._nowStartTime = new Date().getTime();

【讨论】:

谢谢克莱康。这是一个非常清楚的解释。【参考方案2】:

表达式+(new Date())Number(new Date) 相同,因此基本上您将日期转换为数字时间戳

Common 是一个对象,所以_nowStartTime 是 Common 的一个属性

【讨论】:

以上是关于用一元“+”运算符为新日期添加前缀的目的是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在调用 std::numeric_limits<unsigned char> 成员之前,一元“+”的目的是啥?

运算符的优先级

用“+”运算符为对象添加前缀有啥作用? [复制]

为啥 F# 有一个一元加号运算符?

2021-09-06:给表达式添加运算符。给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+- 或 * ,返回所有(

解一元二次方程的几种方法分别是啥(用简单清晰的文字表达,最好是通俗易懂的)