Saya sedang membaca 'Javascript Profesional untuk Pengembang Web' Bab 4 dan ini memberi tahu saya bahwa lima jenis primitif adalah: tidak terdefinisi, null, boolean, angka dan string.
Jika null
primitif, mengapa typeof(null)
kembali "object"
?
Bukankah itu berarti null
dilewatkan dengan referensi (saya berasumsi di sini semua objek dilewatkan dengan referensi), maka membuatnya BUKAN primitif?
javascript
primitive
thetrystero
sumber
sumber
Jawaban:
Dari halaman MDN tentang perilaku
typeof
operator :sumber
Karena spek mengatakan demikian .
sumber
typeof
memberi tahu Anda tentang apakah Anda dapat memanggil metode pada sesuatu.null
danundefined
..
atau[ ]
).Seperti yang telah ditunjukkan, spec mengatakan demikian. Tetapi karena implementasi JavaScript sebelum penulisan spesifikasi ECMAScript, dan spesifikasinya berhati-hati untuk tidak memperbaiki kelemahan implementasi awal, masih ada pertanyaan yang sah tentang mengapa itu dilakukan dengan cara ini sejak awal. Douglas Crockford menyebutnya kesalahan . Kiro Risk menganggap itu agak masuk akal :
sumber
Dari buku YDKJS
sumber
singkatnya: ini bug dalam ECMAScript, dan tipenya seharusnya
null
referensi: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
sumber
Dalam JavaScript null adalah "tidak ada". Seharusnya sesuatu yang tidak ada. Sayangnya, dalam JavaScript, tipe data null adalah objek. Anda dapat menganggapnya sebagai bug dalam JavaScript yang tipenya null adalah objek. Itu harus nol.
sumber
Dalam JavaScript, typeof null adalah 'objek', yang secara tidak benar menyatakan bahwa null adalah objek. Ini adalah bug dan sayangnya tidak bisa diperbaiki, karena akan merusak kode yang ada.
sumber
untuk orang-orang yang tertarik pada beberapa kode yang membuat perilaku ini ini adalah tautan untuk Anda guyz .... mengapa typeof null objek dengan implimentation
sumber