JavaScript-Datumskonstruktor: Enthüllung des nullbasierten Monatsarguments
Beim Erstellen eines JavaScript-Datumsobjekts ist Ihnen möglicherweise das Monatsargument aufgefallen beginnt bei 0 statt bei 1. Diese Besonderheit kann zu Verwirrung führen, insbesondere da das Tag-des-Monats-Argument auf 1 basiert. Warum ist diese Diskrepanz vorhanden, und Gibt es einen logischen Grund dafür?
Die Antwort liegt in der historischen Entwicklung des Date-Konstruktors von JavaScript. Wie Brendan Eich, der Erfinder von JavaScript, auf Twitter erklärte, wurde JavaScripts Date von Javas java.util.Date inspiriert, das ebenfalls ein auf Null basierendes Monatssystem verwendete.
Ursprünglich zielte JavaScript darauf ab, Javas API zu emulieren erleichtern die sprachübergreifende Kompatibilität. Leider bedeutete dies, dass Eigenarten wie das auf Null basierende Monatsargument übernommen werden mussten. Ken Smith von Netscape half bei der Portierung des Java-Codes nach C für die JavaScript-Implementierung.
Trotz der anfänglichen Designauswahl haben Entwickler seit langem die Unannehmlichkeiten dieses nullbasierten Systems erkannt. Die in Java 1.1 eingeführte Klasse java.util.Calendar stellte eine bessere Datums-/Uhrzeit-API bereit, behielt jedoch weiterhin die auf Null basierende Monatskonvention bei.
JavaScript fehlte eine robuste, integrierte Datums-/Uhrzeit-API. Entwickler müssen sich auf Bibliotheken von Drittanbietern wie Luxon, Moment.js und date-fns verlassen. Diese Bibliotheken beheben die Einschränkungen des Date-Objekts und bieten eine intuitivere Datumsverarbeitung.
Der TC39 Temporal-Vorschlag zielt darauf ab, diesen Mangel durch die Einführung einer modernen Datums-/Uhrzeit-API in JavaScript zu beheben. Dieser Vorschlag würde, wenn er umgesetzt wird, die Datumsverarbeitung von JavaScript auf den neuesten Stand der aktuellen Best Practices bringen und einen konsistenteren und benutzerfreundlicheren Ansatz bieten.
Das obige ist der detaillierte Inhalt vonWarum verwendet der „Date'-Konstruktor von JavaScript einen nullbasierten Monat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!