null dan tidak terdefinisi

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