Dalam JavaScript, ini disebut sebagai undefined
, yang merupakan nilai sentinel unik, berbeda dari null
.
Anda dapatkan undefined
dengan mengevaluasi variabel global undefined
, atau properti objek, yang tidak didefinisikan atau dengan mengevaluasi pernyataan, yang tidak mengembalikan nilai, seperti panggilan ke fungsi, yang tidak mengembalikan apa-apa, atau blok atau deklarasi variabel (meskipun keduanya bukan ekspresi yang valid, jadi Anda hanya akan menemukan itu dalam JavaScript REPL).
Ketika undefined
nilai dipaksa menjadi Object
itu menjadi null
, tetapi tidak null
.
Inilah sedikit ilustrasi:
var a = [1, 2, 3];//undefined
a[0];//1
a[4];//undefined
var o = { foo: "123" };//undefined
o.foo;//"123";
o.bar;//undefined
function bar() { return null; };//undefined
bar();//null
function foo() { /*just an empty block*/};//undefined
foo();//undefined
typeof undefined;//"undefined"
typeof null;//"object"
null == undefined;//true - that is because undefined is converted to an object for comparison and thus yields null
null === undefined;//false - because they are not the same
Saya pikir masuk akal untuk memanggil nilai yang tidak terdefinisi (berbeda dengan nilai yang didefinisikan null
) tidak terdefinisi, jika itu pertanyaan Anda. Menggunakan nilai sentinel yang unik untuk mengkomunikasikan tidak adanya nilai yang ditentukan adalah solusi yang bisa diterapkan untuk bahasa yang dinamis, meskipun sering kurang dipahami.