创建新Date实例时的奇怪行为

时间:2013-12-13 14:47:52

标签: javascript

美好的一天。 我今天在与这种情况有关的工作中发现了一个错误,但无法弄清楚这种行为的原因。

为什么:

new Date(undefined)

返回无效日期,但是:

new Date(null)

返回有效的一个(1970年1月1日星期四00:00:00 GMT + 0000(GMT标准时间))

1 个答案:

答案 0 :(得分:5)

我怀疑是因为

Number(undefined)

NaN

Number(null)

0Date构造函数尝试强制其参数为数字。如果该号码为NaN,则您的日期无效。如果它是0,那么它就是纪元日期。

如果您想要安全并且您遇到undefined价值偷偷摸摸的问题,您可以随时执行类似

的操作
var theDate = new Date( whatever || 0 );

然而,这些日期的用处似乎值得怀疑。