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) {

Siz typeof operatörünü istiyorsunuz. Spesifik olarak:

if (typeof variable !== 'undefined') {
    // the variable is defined
}
Yorumlar (19)

Çoğu durumda şunları kullanırsınız:

elem != null

Basit bir if (eleman)dan farklı olarak, 0, false, NaN ve ''a izin verir, ancak null veya undefinedı 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): elemin bir nesne olması garanti ediliyorsa veya false, 0, vb. "default" değerler olarak kabul ediliyorsa (dolayısıyla undefined veya null ile eşdeğer) kullanılabilir.

  • typeof elem == 'undefined', belirtilen bir nullun 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 (yani var ifadesi yoksa, windowun 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:

if (elem === undefined) ...

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:

var undefined; // really undefined
if (elem === undefined) ...

Ya da:

(function (undefined) {
    if (elem === undefined) ...
})();

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.

Yorumlar (4)

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.

== nullveya!== nullyalnızca değişkenin değerinin tam olaraknull` olup olmadığını kontrol eder.

== null veya != null değerin undefined veya null olup olmadığını kontrol eder.

if(value)değişkeninundefined,null,0` veya boş bir dize olup olmadığını kontrol eder.

Yorumlar (0)