【发布时间】:2020-01-03 21:07:36
【问题描述】:
我正在移植一些 javascript 代码(不是我最擅长的语言)并且遇到了这个:
Common._nowStartTime = +(new Date());
Common 是一个模块,nowStartTime 是该模块的一个属性。我不确定表达式的右手是什么意思?为什么要使用一元 + 运算符前缀?
【问题讨论】:
-
要将其转换为数字?
标签: javascript
我正在移植一些 javascript 代码(不是我最擅长的语言)并且遇到了这个:
Common._nowStartTime = +(new Date());
Common 是一个模块,nowStartTime 是该模块的一个属性。我不确定表达式的右手是什么意思?为什么要使用一元 + 运算符前缀?
【问题讨论】:
标签: javascript
根据MDN:
一元加号运算符在其操作数之前并计算其操作数,但尝试将其转换为数字(如果尚未转换)。
它通常用作将值转换为数字的简写。通过调用值的.valueOf() 进行转换。来自 MDN:
简写符号是在变量前面加上一个加号:+"5"
Date 实现了自己的 Date.prototype.valueOf() 记录的 here:
此方法在功能上等同于 Date.prototype.getTime() 方法。
所以结果实际上是这段代码的简写:
Common._nowStartTime = new Date().getTime();
【讨论】:
表达式+(new Date()) 与Number(new Date) 相同,因此基本上您将日期转换为数字时间戳
Common 是一个对象,所以_nowStartTime 是 Common 的一个属性
【讨论】: