我正在移植一些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 的属性