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.

Kata kunci null merepresentasikan ketidakhadiran nilai yang sengaja ditetapkan. null adalah primitif, meskipun operator typeof menampilkan bahwa null adalah sebuah objek. Ini adalah error yang telah membawa dari versi pertama JavaScript dan sengaja ditinggalkan tidak ditangani untuk menghindari merusak perilaku yang diharapkan di seluruh web.

typeof null
> object

Anda dapat menentukan variabel sebagai null dengan harapan bahwa hal itu mencerminkan nilai yang ditetapkan padanya pada skrip atau nilai yang secara eksplisit tidak ada. Anda juga dapat menetapkan 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 operasi yang tidak mengembalikan nilai yang berarti. Misalnya, ini bisa terjadi ketika Anda mendeklarasikan fungsi di konsol developer browser:

function myFunction() {}
> undefined

Fungsi secara eksplisit menampilkan undefined saat pernyataan return-nya tidak menghasilkan nilai.

(function() {
   
return;
}());
> undefined

Perbandingan null dan undefined

Meskipun undefined dan null memiliki beberapa fungsi tumpang-tindih, keduanya memiliki dengan tujuan yang berbeda. Dalam artian yang paling ketat, null mewakili nilai sengaja didefinisikan sebagai "kosong," dan undefined menunjukkan tidak adanya nilai yang ditetapkan.

null dan undefined sama secara longgar, tetapi tidak sepenuhnya sama. Operator persamaan longgar memaksa operand dari berbagai jenis ke boolean nilai, sehingga null dan undefined keduanya menjadi false. Operator persamaan 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 desain keputusan yang dibuat di awal pengembangan JavaScript, dan memungkinkan browser lama menimpa undefined sepenuhnya. Di {i>browser<i} modern, kita masih bisa menggunakan undefined sebagai ID dalam cakupan non-global, yang menggantikan nilainya dalam cakupan dari pernyataan tersebut. Jangan pernah menggunakan undefined sebagai ID. Ini dapat menyebabkan perilaku yang tidak terduga dan membingungkan para pengelola masa depan codebase Anda.

Menguji pemahaman Anda

Apa yang ditampilkan typeof null?

string
undefined
primitive
object