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
}
Ç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)
: elem
in 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 null
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 (yani var
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:
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.
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 olarak
null` olup olmadığını kontrol eder.
== null
veya != null
değerin undefined
veya null
olup olmadığını kontrol eder.
if(value)değişkenin
undefined,
null,
0` veya boş bir dize olup olmadığını kontrol eder.