JavaScript değişkenin var olup olmadığını kontrol eder (tanımlanmış/başlatılmış)
Bir değişkenin başlatılıp başlatılmadığını kontrol etmek için hangi yöntem daha iyi/doğrudur? (Değişkenin herhangi bir şey tutabileceğini varsayarsak (string, int, nesne, fonksiyon, vb.))
if (elem) { // or !elem
veya
if (typeof(elem) !== 'undefined') {
veya
if (elem != null) {
1632
3
Siz
typeof
operatörünü istiyorsunuz. Spesifik olarak:Çoğu durumda şunları kullanırsınız:
Basit bir
if (eleman)
dan farklı olarak,0
,false
,NaN
ve''
a izin verir, ancaknull
veyaundefined
ı reddeder, bu da onu bir argümanın veya bir nesnenin özelliğinin varlığı için iyi ve genel bir test haline getirir.Diğer çekler de yanlış değildir, sadece farklı kullanımları vardır:
if (elem)
:elem
in bir nesne olması garanti ediliyorsa veyafalse
,0
, vb. "default" değerler olarak kabul ediliyorsa (dolayısıylaundefined
veyanull
ile eşdeğer) kullanılabilir.typeof elem == 'undefined'
, belirtilen birnull
un başlatılmamış bir değişken veya özellik için farklı bir anlama sahip olduğu durumlarda kullanılabilir.Bu, eğer
elem
belirlenmemişse (yanivar
ifadesi yoksa,window
un bir özelliği değilse veya bir fonksiyon argümanı değilse) hata atmayan tek kontroldür. Bu, bence, yazım hatalarının fark edilmeden geçmesine izin verdiği için oldukça tehlikelidir. Bundan kaçınmak için aşağıdaki yönteme bakın.Ayrıca
undefined
ile katı bir karşılaştırma da yararlıdır:Ancak, global
undefined
başka bir değerle geçersiz kılınabileceğinden,undefined
değişkenini kullanmadan önce geçerli kapsamda bildirmek en iyisidir:Ya da:
Bu yöntemin ikincil bir avantajı da JS küçültücülerinin
undefined
değişkenini tek bir karaktere indirgeyerek her seferinde birkaç bayt tasarruf etmenizi sağlamasıdır.Bu, değişkenin sadece tanımlanmış olmasını mı önemsediğinize yoksa anlamlı bir değere sahip olmasını mı istediğinize bağlıdır.
Türün tanımsız olup olmadığını kontrol etmek, değişkenin henüz tanımlanıp tanımlanmadığını kontrol eder.
== null
veya
!== nullyalnızca değişkenin değerinin tam olarak
null` olup olmadığını kontrol eder.== null
veya!= null
değerinundefined
veyanull
olup olmadığını kontrol eder.if(value)
değişkenin
undefined,
null,
0` veya boş bir dize olup olmadığını kontrol eder.