用一元“+”运算符为新日期添加前缀的目的是啥? [复制]
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> 成员之前,一元“+”的目的是啥?
2021-09-06:给表达式添加运算符。给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+- 或 * ,返回所有(