今天我发现Javascript有点奇怪:
console.log(new Date(null)); // 1970-01-01T00:00:00.000Z
console.log(new Date(undefined)); // Invalid Date
为什么会这样?我知道null和undefined并不相同,但是在这种情况下,我希望得到相同的结果。
答案 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())