Сегодня я заметил что-то странное с Javascript:
console.info(new Date(null)); // 1970-01-01T00:00:00.000Z
console.info(new Date(undefined)); // Invalid DateПочему это так? Я знаю, что null и undefined - это не одно и то же, но в этом контексте я ожидал бы того же результата.
0, но для undefined его NaN.
Кажется, моя теория верна. @AlexK. вы должны опубликовать свой комментарий в качестве ответа.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если new Date вызывается с одним примитивным аргументом, который не является строкой, он преобразует его в число. И хотя null будет принудительно переходить к 0, undefined станет NaN, и это внутреннее значение даты, которую вы возвращаете.
console.info(null + ":")
console.info(Number(null))
console.info(new Date(null).valueOf())
console.info(new Date(null).toString())
console.info(undefined + ":")
console.info(Number(undefined))
console.info(new Date(undefined).valueOf())
console.info(new Date(undefined).toString())
Насколько я понимаю, звонок
new Date(null)равносилен звонкуnew Date(0). Вызовnew Date(undefined), возможно, заканчивается суммированием undefined (как число для миллисекунд) и в результате получается NaN, которое является недействительной датой (вызовnew Date(NaN), очевидно, возвращает «недопустимую дату»). Но я не уверен в своей теории, может кто-нибудь прояснить это?