返回值+new Date()与Date.now()是否不同

Is the return value +new Date() different from Date.now()?

本文关键字:Date 是否 now 返回值 +new      更新时间:2023-09-26

假设我有两个函数

function newDate(){
  return +new Date();
}
function dateNow(){
  return Date.now();
}

所以我想知道一个返回+new Date()和另一个返回Date.now()否有区别?

根据规范:

15.9.4.4 Date.now()
now函数返回一个Number值,该值是指定对now进行调用的UTC日期和时间的时间值。

15.9.3.3新日期()
新建对象的[[PrimitiveValue]]内部属性设置为标识当前时间的时间值(UTC)。

使用一元+运算符将new Date()创建的Date对象强制为一个数字会产生基元值。因此,你的两种情况是否总是相同的问题可以归结为以下两件事是否相同:

  1. 到目前为止呼叫发生的日期和时间
  2. 标识当前时间的时间值

这似乎是一个很好的赌注,他们是。

第三方编辑

chrome(v49)控制台返回以下消息:

x = Date.now(), y1 = +new Date(), y2 = new Date();
x returns 1463201841680
y1 returns 1463201841680
y2 returns Sat May 14 2016 06:57:21 GMT+0200 

它们给出相同的值。在chrome devtools控制台中验证

Date.now() === +new Date()
> true

不过,Date.now()的性能要好一点

性能-Date.now()与Date.getTime()