2015-12-01 60 views

回答

4

這裏發生了什麼,爲什麼?

發生什麼事情是你遇到無證行爲。 Date構造函數需要支持的唯一字符串格式是the specification中的ISO-8601簡化,這與您的示例不匹配。其他所有內容都沒有記錄,JavaScript引擎可以自由地做任何他們想做的事情,包括猜測你給予他們的格式(並且當你像'月份數字'之類的值出界時做JavaScript的漂亮翻轉),或者給你一個無效的日期。

如果您對翻轉感興趣,IE會將其視爲1922年第22個月的第22天。當然,年份沒有22個月,但JavaScript的Date定義爲處理各個領域的翻轉,如月份數,優雅。因此,1922年的第22個月實際上是1923年的第10個月,當然,你是在它的第22天:1923年10月22日。

+0

[當給定任何不符合日期時間字符串格式的字符串值時,Date.parse生成的值與實現有關](http://www.ecma-international.org/ecma-262/6.0/ #仲丁基date.parse)。所以有點文件證明它是無證的。我不會依賴於依賴實現的實現lol –

+0

@Austin:是的,它被記錄爲無證。 :-) –

+0

@ T.J.Crowder謝謝你的回答。 – Sehab

-1

IE 11和Firefox 42將月份的值22轉換爲12 +10。 Chromium會引發錯誤。

不同的JS引擎實現爲無效值提供了不同的結果。