Terdapat dua jenis primitif dalam JavaScript: Null dan Undefined. Kedua-dua jenis ini sering membuat pembangun JavaScript keliru, bilakah ianya Null dan bilakah ianya Undefined?
Jenis Undefined hanya mempunyai satu nilai, iaitu undefined. Apabila pembolehubah yang diisytiharkan belum dimulakan, nilai lalai pembolehubah tidak ditentukan.
Jenis Null juga hanya mempunyai satu nilai, iaitu null. Null digunakan untuk mewakili objek yang belum wujud Ia sering digunakan untuk menunjukkan bahawa fungsi cuba mengembalikan objek yang tidak wujud.
var oNilai;
alert(oValue == undefined); //output "true"
Kod ini dipaparkan sebagai benar, yang bermaksud bahawa nilai oVlaue tidak ditentukan kerana kami belum memulakannya.
alert(null == document.getElementById('notExistElement'));
Apabila nod DOM dengan id "notExistElement" tidak wujud pada halaman, kod ini memaparkan "true" kerana kami cuba mendapatkan objek yang tidak wujud.
alert(typeof undefined); //output "undefined"
alert(typeof null); //output "objek"
Barisan pertama kod mudah difahami, jenis undefined ialah Undefined; Sebenarnya, ini adalah kesilapan dalam pelaksanaan awal JavaScript, yang kemudiannya diterima pakai oleh ECMAScript. Hari ini kita boleh menerangkan bahawa null ialah pemegang tempat untuk objek yang tidak wujud, tetapi kita masih perlu memberi perhatian kepada ciri ini apabila sebenarnya pengekodan.
alert(null == undefined); //output "true"
ECMAScript menganggap undefined berasal daripada null, jadi ia mentakrifkannya sebagai sama. Walau bagaimanapun, jika dalam beberapa kes kita mesti membezakan antara kedua-dua nilai ini, apakah yang perlu kita lakukan? Dua kaedah berikut boleh digunakan.
alert(null === undefined); //output "false"
alert(typeof null == typeof undefined); //output "false"
Menggunakan kaedah typeof telah disebutkan sebelum ini Jenis null dan undefined adalah berbeza, jadi "false" adalah output. Dan === mewakili kesaksamaan mutlak, di sini null === undefined output palsu.