为什么 new Date(null) 返回这个:Date 1970-01-01T00:00:00.000Z?

新手上路,请多包涵
new Date(null)
// Date 1970-01-01T00:00:00.000Z

为什么当我在 JavaScript 控制台中键入 new Date(null) 时,我得到了

Date 1970-01-01T00:00:00.000Z

原文由 Baikuntha 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 912
1 个回答

因为 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

原文由 Paul T. 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题