Обратите внимание, что этот конструктор теперь deprecated. Но для ответа на вопрос:
Этот конструктор поворачивается и передает строку "not a real date 1"
в конструктор Date
. Посмотрите на это:
В Chrome:
new Date("not a real date 1") --> Mon Jan 01 2001 00:00:00 GMT-0600 (Central Standard Time)
new Date("not a real date") --> Invalid Date
В IE11:
new Date("not a real date 1") --> [date] NaN[date] NaN
new Date("not a real date") --> [date] NaN[date] NaN
В FireFox 42:
new Date("not a real date 1") --> Invalid Date
new Date("not a real date") --> Invalid Date
Так что ответ, это является правильность проверки и его действительный объект даты, поскольку Date
конструктор успешно создал объект Date
. В конструкторе Date
есть ошибка, по крайней мере в некоторых браузерах.
Edit:
Вот соответствующая часть ECMAScript 6 spec, курсив:
Если Тип (v) является String, то Пусть телевизор будет результатом разбора V в качестве даты , точно так же, как и для метода разбора (20.3.3.2). Если разбор завершился резким завершением, tv - это запись завершения.
И затем, раздел 20.3.3.2:
Функция первой попытки разобрать формат строки в соответствии с правилами (в том числе протяженных лет), называемых в Date Time Струнный Format (20.3.1.16) , Если строка не соответствует этому формату, функция может вернуться к любой эвристике, специфичной для конкретной реализации, или к форматам дат реализации. Неузнаваемые строки или даты, содержащие недопустимые значения элементов в формате String, должны вызывать Date.parse для возврата NaN.
Итак, поскольку спецификация явно позволяет браузеру творчески разбирать строку, я думаю, это не ошибка. Chrome просто не ведет себя так же, как другие.
Теперь я вижу. Благодаря! – rolu
Я нашел спецификацию. См. Править. – Amy
Цените его. tyvm! – rolu