为什么新日期(未定义)创建无效的日期,而新日期(空)却没有呢?

时间:2018-07-30 14:22:48

标签: javascript

今天我发现Javascript有点奇怪:

console.log(new Date(null)); // 1970-01-01T00:00:00.000Z
console.log(new Date(undefined)); // Invalid Date

为什么会这样?我知道null和undefined并不相同,但是在这种情况下,我希望得到相同的结果。

1 个答案:

答案 0 :(得分:6)

如果new Date用不是字符串的单个原始参数调用,则它将强制转换为数字。并且null将强制转换为0,而undefined将变为NaN,这就是您取回日期的内部价值。

console.log(null + ":")
console.log(Number(null))
console.log(new Date(null).valueOf())
console.log(new Date(null).toString())
console.log(undefined + ":")
console.log(Number(undefined))
console.log(new Date(undefined).valueOf())
console.log(new Date(undefined).toString())