【问题标题】: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 是该模块的一个属性。我不确定表达式的右手是什么意思?为什么要使用一元 + 运算符前缀?

【问题讨论】:

  • 要将其转换为数字?

标签: javascript


【解决方案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 的一个属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2022-11-24
    相关资源
    最近更新 更多