首页 > 解决方案 > 日期前的“+”有什么作用?

问题描述

我从一位已故同事那里找到了一些代码,没有人确定以下Date对象前面的加号在做什么。

return {
  isActive: +new Date(notice.reportedAt) === +this.activeNoticeReportedAt,
  ...
}

我觉得这是一种应该防止未定义的 JavaScript 技巧,但这只是一个疯狂的猜测。

请不要那activeNoticeReportedAt已经是一个Date

标签: javascriptdate

解决方案


它将它变成一个number,它以毫秒为单位表示日期的 Unix 时间戳:

> +new Date()
< 1542726854220

在这里使用它的原因是Date无法使用==运算符比较对象,因为它只检查对象是否相等,而不是值相等:

> x = new Date("2017-01-01")
> y = new Date("2017-01-01")
> x == y
false

推荐阅读