【发布时间】:2013-12-13 14:47:51
【问题描述】:
美好的一天。 我今天在工作中发现了一个与这种情况相关的错误,但无法弄清楚这种行为的原因。
为什么会这样:
new Date(undefined)
返回一个无效的日期,但是:
new Date(null)
返回一个有效值(Thu Jan 01 1970 00:00:00 GMT+0000(GMT 标准时间))
【问题讨论】:
标签: javascript
美好的一天。 我今天在工作中发现了一个与这种情况相关的错误,但无法弄清楚这种行为的原因。
为什么会这样:
new Date(undefined)
返回一个无效的日期,但是:
new Date(null)
返回一个有效值(Thu Jan 01 1970 00:00:00 GMT+0000(GMT 标准时间))
【问题讨论】:
标签: javascript
我怀疑是因为
Number(undefined)
是NaN 而
Number(null)
是0。 Date 构造函数试图强制其参数为数字。如果该号码是NaN,您将得到一个无效的日期。但是,如果它是 0,则它是纪元日期。
如果您想要安全并且遇到undefined 值潜入的问题,您可以随时执行类似的操作
var theDate = new Date( whatever || 0 );
但是这些日期的有用性似乎值得怀疑。
【讨论】:
new Date() 和 new Date(undefined) 应该是相同的,但似乎 Date 构造函数检查 arguments 长度然后尝试将 arguments[0] 转换为整数。
undefined 显式传递给函数时,在该函数中 arguments.length 将是 1,而不是 0。