JavaScript 零索引月份的歷史異常
當使用建構子在JavaScript 中建構一個新的Date 物件時,出現了一個奇怪的觀察結果:月份參數從0 開始。這種與直覺編號的偏差讓開發人員困惑了相當多的時間
儘管月份參數是零索引的,但月份參數從 1 開始。這種不一致進一步激發了人們對這種設計選擇背後的基本原理的好奇心。
為了揭開這段歷史異常的神秘面紗,我們冒險進入程式設計歷史的編年史:
Java 的Date 的血統API
JavaScript 的創建者Brendan Eich 在Twitter 上透露,他採用了Java 的JDK1.0(1995)中的Date API。 Netscape 的 Ken Smith 將 java.util.Date 類別移植到 JavaScript,從而繼承了這個奇特的月份索引方案。
Java 中已棄用,但 JavaScript 中仍保留
Java 最終在 JDK 1.1 中棄用了這種異常行為,支援從零開始的索引。然而,JavaScript 卻保持不變。
現代解決方案和未來前景
雖然JavaScript 缺乏具有更正月份索引的內建日期/時間API,但許多第三方Luxon Moment.js、date-fns和js-joda 等函式庫已成為可行的替代方案。
On TC39 Temporal 提案旨在為該語言引入全面且現代的日期/時間系統。如果被採用,JavaScript 最終將擺脫其歷史怪癖的束縛,並擁抱用戶友好且直觀的月份編號。
以上是為什麼 JavaScript 的「日期」物件使用從零開始的月份索引?的詳細內容。更多資訊請關注PHP中文網其他相關文章!