用一元"+"运算符作为新日期前缀的目的是什么?



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

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

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

根据 MDN:

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

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

速记符号在变量前面加上加号:+"5">

Date实现了自己的Date.prototype.valueOf(),记录如下:

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

因此,结果实际上是此代码的简写:

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

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

Common是一个对象,因此_nowStartTime是 Common 的属性

最新更新