Поведение, которое вы наблюдали, зависит от реализации, которая для конструктора one-arg Date(value)
описана в спецификации ECMA-262 в главе 20.3.2.2 . Ваш пример перейдет к шагу 3.b.ii.1. в котором говорится, что строка будет проанализирована в соответствии с правилами, изложенными в главе 20.3.3.2 для метода Date.parse(string)
. Эта спецификация метода определяет:
Функция сначала пытается проанализировать формат строки в соответствии с правилами (включая расширенные годы), вызванными в формате строки даты и времени ( 20.3.1.16 ). Если строка не соответствует этому формату, функция может использовать эвристику, специфичную для реализации, или форматы даты, зависящие от реализации. Нераспознаваемые строки или даты, содержащие недопустимые значения элементов в формате String, должны заставить Date.parse
вернуть NaN .
Поскольку ваши строки явно не соответствуют формату строки даты и времени, браузер возвращается к алгоритму, специфичному для реализации. Мой Chrome 70, например, возвращает объект Date
для текущего времени, что соответствует вызову конструктора no-args Date()
. IE11, с другой стороны, анализирует строку в NaN
и возвращает объект Date со значением «недопустимая дата» .