Rumah >hujung hadapan web >tutorial js >Mengapa Adakah `typeof null` Mengembalikan 'objek' dalam JavaScript?

Mengapa Adakah `typeof null` Mengembalikan 'objek' dalam JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-03 22:38:09731semak imbas

Why Does `typeof null` Return

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn