【问题标题】:Is the return value +new Date() different from Date.now()?返回值 +new Date() 与 Date.now() 不同吗?
【发布时间】:2016-05-12 19:51:16
【问题描述】:

假设我有两个函数

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

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

【问题讨论】:

  • 在您的标题和帖子中您写的+new Date() 是指这个还是没有+ 符号的new Date()
  • 我的意思是 +new Date() 带有符号 +

标签: javascript timestamp


【解决方案1】:

根据规范:

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

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 

【讨论】:

    【解决方案2】:

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

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

    但是,使用 Date.now() 的性能要好一些

    Performance - Date.now() vs Date.getTime()

    【讨论】:

    • Date.now() 是否返回时间戳
    • 它确实返回了一个时间戳。如果您同意,请标记为完成
    • 好的。 +new Date() 是否会返回日期的等值数字?
    • 我的回答表明它们是数字等价物
    • 在我的 chrome 49 中,这个 Date.now() === new Date(); 返回 false,这个 Date.now() === +new Date(); 返回 true。
    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2016-10-28
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多