为什么新的Date(null)返回此日期:Date 1970-01-01T00:00:00.000Z?

时间:2018-03-17 17:45:32

标签: javascript date epoch

new Date(null)
// Date 1970-01-01T00:00:00.000Z

为什么我在JavaScript控制台中输入new Date(null)时我得到了Date 1970-01-01T00:00:00.000Z

3 个答案:

答案 0 :(得分:7)

因为ECMAScript 2017标准是这样说的吗?

ECMA部分20.3.1.1声明:

  

1970年1月1日午夜的确切时刻UTC 由值+0 表示。

......这可能会让你说,“......但是!,但是!,我没有说+0,我说”:

new Date(null)

好的,那就让我们遵循那个标准......

该Date构造函数示例转到20.3.2.2部分,其中项目 3.b.iii 表示:

  

3.b.iii:否则,让V为ToNumber(v)。

ToNumber是一个超链接,因此请按照7.1.3部分,其中有一个数字转换表,其中显示:

  

参数类型|结果
  空| 0

因此:

new Date(null)

有效地成为:

new Date(+0)

这就是你最终得到的原因:

  

日期1970-01-01T00:00:00.000Z

答案 1 :(得分:0)

显然是因为(Unix时间戳0)是Date对象默认初始化的内容,是吗?

答案 2 :(得分:0)

在执行新的日期(空)时,它将为我返回Wed Dec 31 1969 Wed Dec 31格林尼治标准时间-0500(东部标准时间)。