JavaScript'te, temelde 'Ben yokum' yazan iki değer vardır - undefined
ve null
.
Bir programcı herhangi bir numara olabilir atanmamış olan A özellik undefined
olmak için bir özellik için, ama sırayla null
, null
açıkça kendisine atanmalıdır.
Bir keresinde buna ihtiyaç olduğunu düşünmüştüm null
çünkü undefined
ilkel bir değer ve null
bir nesnedir. Hatta eğer değil typeof null
verecektir 'object'
- vasıtalar, Aslında, her ikisi de ilkel değerler şunlardır: undefined
veya null
her ikisi de boş nesne dönüştürülebilir gibi (bir kurucu içinde, açığa başarısızlığa bir hata oluşturması sahiptir), bir yapıcı işlevi döndürülebilir.
Ayrıca ikisi de false
boole bağlamlarında değerlendirir . Aklıma gelen tek gerçek fark, birinin sayısal bağlamlarda NaN
, diğerinin değerlendirmesidir 0
.
Öyleyse neden her ikisi de var undefined
ve null
bu, null
bir özelliğin ayarlanıp ayarlanmadığını bulmaya çalışırken yanlış bir şekilde kontrol eden programcıların kafasını karıştırıyorsa ?
Bilmek istediğim şey, kullanılması gereken ve bunun yerine null
kullanılarak ifade edilemeyen makul bir örneğe sahip olup olmadığıdır undefined
.
Dolayısıyla, genel fikir birliği undefined
, 'böyle bir mülkiyet yok' null
anlamına gelirken , 'mülk var, ancak değeri yok' anlamına geliyor gibi görünüyor .
JavaScript uygulamaları bu davranışı gerçekten zorlasaydı undefined
, ancak tamamen geçerli bir ilkel değer olsaydı, bununla yaşayabilirim, bu nedenle bu sözleşmeyi bozmak için mevcut mülklere kolayca atanabilir. Bu nedenle, bir özelliğin var olduğundan emin olmak istiyorsanız, in
operatörü veya hasOwnProperty()
yine de kullanmanız gerekir . Yani bir kez daha: için ayrı değerler için pratik kullanım nedir undefined
ve null
?
Aslında undefined
artık kullanımda olmayan ancak istemediğim özelliklerin değerlerini geri almak istediğimde kullanıyorum delete
. Onun null
yerine kullanmalı mıyım ?
In JavaScript, there are two values which basically say 'I don't exist' - undefined and null.
Hayır, sadece bunu undefined
söylüyor.
undefined
.