Di JavaScript, ada dua nilai yang pada dasarnya mengatakan 'Saya tidak ada' - undefineddan null.
Properti yang belum ditetapkan apa pun oleh programmer undefined, tetapi agar properti menjadi null, nullharus ditetapkan secara eksplisit padanya.
Saya pernah berpikir bahwa ada kebutuhan nullkarena undefinedadalah nilai primitif dan nullsebuah objek. Ini tidak, bahkan jika typeof nullakan menghasilkan 'object': Sebenarnya, keduanya nilai-nilai primitif - yang berarti tidak undefinedatau nulldapat kembali dari fungsi konstruktor, karena keduanya akan dikonversi ke obyek kosong (kita harus melempar kesalahan kegagalan kabarkan di konstruktor).
Keduanya juga mengevaluasi falsedalam konteks boolean. Satu-satunya perbedaan nyata yang dapat saya pikirkan adalah bahwa yang satu mengevaluasi NaN, yang lain ke 0dalam konteks numerik.
Jadi mengapa ada keduanya undefineddan nulljika ini hanya membingungkan pemrogram yang salah memeriksa nullsaat mencoba mencari tahu apakah properti telah disetel atau belum?
Yang ingin saya ketahui adalah jika ada yang memiliki contoh yang masuk akal di mana perlu menggunakan nullyang tidak bisa diekspresikan menggunakan undefined.
Jadi konsensus umum tampaknya undefinedberarti 'tidak ada properti seperti itu' sedangkan nullberarti 'properti itu ada, tetapi tidak memiliki nilai'.
Saya dapat menerimanya jika implementasi JavaScript benar-benar akan memberlakukan perilaku ini - tetapi undefinedmerupakan nilai primitif yang benar-benar valid, sehingga dapat dengan mudah ditetapkan ke properti yang ada untuk memutuskan kontrak ini. Oleh karena itu, jika Anda ingin memastikan apakah suatu properti ada, Anda harus menggunakan inoperator atau hasOwnProperty()tetap. Jadi sekali lagi: apa kegunaan praktis dari nilai terpisah untuk undefineddan null?
Saya benar-benar menggunakan undefinedsaat saya ingin menghapus nilai properti yang tidak lagi digunakan tetapi saya tidak mau delete. Haruskah saya gunakan nullsebagai gantinya?
In JavaScript, there are two values which basically say 'I don't exist' - undefined and null.Tidak, hanya undefinedkatakan itu.
undefined.