JavaScript memiliki beberapa cara untuk menunjukkan tidak adanya nilai. Halaman ini
menjelaskan dua cara yang paling umum: jenis data null
dan undefined
.
null
Kata kunci null
menunjukkan tidak adanya nilai yang ditentukan dengan sengaja. null
berupa primitif, meskipun operator typeof
menampilkan bahwa null
adalah objek.
Ini adalah error yang telah berlanjut dari JavaScript versi pertama dan sengaja tidak ditangani untuk menghindari melanggar perilaku yang diharapkan di seluruh web.
typeof null
> object
Anda dapat menentukan variabel sebagai null
dengan ekspektasi bahwa variabel tersebut mencerminkan nilai yang ditetapkan padanya pada waktu tertentu dalam skrip atau nilai yang tidak ada secara eksplisit. Anda juga dapat menetapkan nilai null
ke referensi yang ada untuk menghapus nilai sebelumnya.
undefined
undefined
adalah nilai primitif yang ditetapkan ke variabel yang baru saja dideklarasikan, atau ke nilai yang dihasilkan dari operasi yang tidak menampilkan nilai yang berarti. Misalnya, hal ini dapat terjadi saat Anda mendeklarasikan fungsi di konsol developer browser:
function myFunction() {}
> undefined
Fungsi secara eksplisit menampilkan undefined
saat pernyataan return
-nya tidak menampilkan nilai.
(function() {
return;
}());
> undefined
Perbandingan null
dan undefined
Meskipun undefined
dan null
memiliki beberapa tumpang-tindih fungsional, keduanya memiliki
tujuan yang berbeda. Dalam arti yang paling ketat, null
mewakili nilai
yang sengaja didefinisikan sebagai "kosong", dan undefined
mewakili tidak adanya nilai yang ditetapkan.
null
dan undefined
sangat sama, tetapi tidak sama persis.
Operator persamaan yang longgar memaksa operand dari berbagai jenis ke nilai
boolean, sehingga null
dan undefined
menjadi false
. Operator kesetaraan yang ketat
menganggap operand dari berbagai jenis data tidak sama.
null == undefined
> true
null === undefined
> false
Tidak seperti kata kunci null
yang dicadangkan, undefined
adalah properti objek global. Ini adalah keputusan desain
yang dibuat di awal pengembangan JavaScript, dan memungkinkan browser lama
menimpa undefined
sepenuhnya. Di browser modern, Anda masih dapat menggunakan
undefined
sebagai ID dalam cakupan non-global, mengganti nilainya dalam
cakupan deklarasi tersebut. Jangan pernah gunakan undefined
sebagai ID. Hal ini
dapat menyebabkan perilaku yang tidak terduga dan dapat membingungkan pengelola
codebase Anda di masa mendatang.
Menguji pemahaman Anda
Apa yang ditampilkan oleh typeof null
?
object
undefined
primitive
string