Mengapa jenis Null Mengembalikan "Objek" Walaupun Bukan Jenis Primitif?
Semasa membaca "Javaskrip Profesional untuk Pembangun Web," anda menghadapi kebingungan: bab menyatakan bahawa primitif termasuk null, namun typeof(null) menghasilkan "objek." Memandangkan primitif biasanya diluluskan oleh nilai dan objek melalui rujukan, ini nampaknya bercanggah dengan sifat primitif null.
Akar Sejarah Manipulasi Jenis
Menyelam ke dalam sejarah JavaScript, kami mendapati bahawa anomali ini berpunca daripada pelaksanaan awal bahasa tersebut. Pada peringkat permulaan JavaScript, nilai telah dicirikan oleh teg jenis dan nilai. Objek mempunyai teg jenis 0. Null, diwakili oleh penuding NULL (0x00), secara tidak sengaja diberikan teg jenis 0.
Kekal Masa Lalu
Perkaitan null secara tidak sengaja ini dengan teg jenis "objek" membawa kepada hasil jenis(null) yang salah. Walaupun terdapat kemas kini dan kemajuan seterusnya dalam bahasa, tingkah laku ini berterusan, dihalang oleh kebimbangan untuk mengganggu kod sedia ada.
Betulkan Dicadangkan tetapi Ditolak
Usaha telah dibuat untuk membetulkan isu ini dengan mencadangkan pembetulan pilihan dalam ECMAScript, berhasrat untuk mengembalikan typeof(null) sebagai "null." Walau bagaimanapun, cadangan itu menghadapi penolakan. Pelaksanaannya akan memperkenalkan perubahan ketara, yang berpotensi memecahkan kod warisan yang bergantung pada gelagat sedia ada.
Situasi Semasa
Oleh itu, jenis gelagat(null) yang pelik kekal tertanam dalam fabrik JavaScript. Manipulasi taip dalam JavaScript terus menjadi aspek bahasa yang bernuansa dan dipengaruhi sejarah, yang ditunjukkan oleh kebiasaan yang kekal ini.
Atas ialah kandungan terperinci Mengapa Adakah `typeof null` Mengembalikan 'objek' dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!