Pembina Tarikh JavaScript: Membongkar Argumen Bulan Berasaskan Sifar
Apabila mencipta objek Tarikh JavaScript, anda mungkin perasan bahawa argumen bulan bermula dari 0 dan bukannya 1. Keanehan ini boleh menyebabkan kekeliruan, terutamanya kerana hujah hari bulan adalah berdasarkan 1. Mengapakah percanggahan ini wujud, dan adakah terdapat sebab logik di sebaliknya?
Jawapannya terletak pada evolusi sejarah pembina Tarikh JavaScript. Seperti yang dijelaskan oleh Brendan Eich, pencipta JavaScript di Twitter, Tarikh JavaScript diilhamkan oleh java.util.Date Java, yang juga menggunakan sistem bulan berasaskan sifar.
Pada asalnya, JavaScript bertujuan untuk meniru API Java untuk memudahkan keserasian merentas bahasa. Malangnya, ini bermakna mewarisi kebiasaan seperti hujah bulan berasaskan sifar. Ken Smith dari Netscape membantu memindahkan kod Java ke C untuk pelaksanaan JavaScript.
Walaupun pilihan reka bentuk awal, pembangun telah lama mengiktiraf kesulitan sistem berasaskan sifar ini. Kelas java.util.Calendar yang diperkenalkan dalam Java 1.1 menyediakan API tarikh/masa yang lebih baik, tetapi ia masih mengekalkan konvensyen bulan berasaskan sifar.
JavaScript tidak mempunyai API tarikh/masa terbina dalam yang mantap, meninggalkan pembangun untuk bergantung pada perpustakaan pihak ketiga seperti Luxon, Moment.js dan date-fns. Pustaka ini menangani batasan objek Date dan menyediakan pengendalian tarikh yang lebih intuitif.
Cadangan Temporal TC39 bertujuan untuk menangani kekurangan ini dengan memperkenalkan API tarikh/masa moden ke dalam JavaScript. Cadangan ini, jika dilaksanakan, akan membawa pengendalian tarikh JavaScript dikemas kini dengan amalan terbaik semasa, memberikan pendekatan yang lebih konsisten dan mesra pengguna.
Atas ialah kandungan terperinci Mengapakah Pembina `Tarikh` JavaScript Menggunakan Bulan Berasaskan Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!