Öyle olmadığını nasıl bir değişken kontrol ederim
null
yaundefined
arasındaki fark nedirnull
veundefined
?Ne arasındaki farktır
==
ve===
(o "===" için Google'da arama yapmanın zor)?
Öyle olmadığını nasıl bir değişken kontrol ederim null
ya undefined
arasındaki fark nedir null
ve undefined
?
Ne arasındaki farktır ==
ve ===
(o "===" için Google'da arama yapmanın zor)?
Yanıtlar:
Değişken olup olmadığını nasıl kontrol edebilirim
null
veyaundefined
...
Değişken null
:
if (a === null)
// or
if (a == null) // but see note below
... ama eğer de geçerlidir olacak ikincisi not a
olduğunu undefined
.
Öyle mi undefined
:
if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below
... ama yine, sonuncunun belirsiz olduğunu unutmayın; eğer bu da doğru olacak a
olan null
.
Şimdi, yukarıdakilere rağmen, bunları kontrol etmenin olağan yolu, falsey oldukları gerçeğini kullanmaktır :
if (!a) {
// `a` is falsey, which includes `undefined` and `null`
// (and `""`, and `0`, and `NaN`, and [of course] `false`)
}
Bu, ToBoolean tarafından spesifikasyonda tanımlanmıştır .
... ve arasındaki fark nedir
null
veundefined
?
Her ikisi de genellikle bir şeyin olmadığını göstermek için kullanılan değerlerdir. undefined
daha genel bir değer olup, başka bir değer atanana kadar değişkenlerin varsayılan değeri, işlev çağrıldığında sağlanmayan işlev bağımsız değişkenlerinin değeri ve bir nesneye sorduğunuzda aldığınız değer olarak kullanılır. sahip olmadığı bir mülk için. Ancak tüm bu durumlarda açıkça kullanılabilir. (Bir özelliğe sahip olmayan bir nesne ile değere sahip bir özellik undefined
arasında bir fark vardır; undefined
bir bağımsız değişkenin değerine sahip bir işlevi çağırmak ve bu bağımsız değişkeni tamamen kapalı bırakmak arasında bir fark vardır .)
null
biraz daha spesifik undefined
: Boş bir nesne başvurusu. JavaScript elbette gevşek yazılmıştır, ancak JavaScript'in etkileşime girdiği her şey gevşek yazılmaz. Tarayıcılarda DOM gibi bir API boş, kullandığımız var bir nesne başvurusu ihtiyacı varsa null
, değil undefined
. Benzer şekilde, DOM'largetElementById
işlemi bir nesne başvurusu döndürür - geçerli bir (DOM öğesini bulmuşsa) veya null
(eğer yapmamışsa).
İlginçtir (ya da değil), bunlar kendi türleridir. Yani null
Null türündeki undefined
tek değerdir ve Tanımsız türdeki tek değerdir.
"==" ve "===" arasındaki fark nedir
Aralarındaki tek fark ==
, değerlerin eşleşmesini sağlamak için tip zorlaması ===
yapacak ve olmayacak. Yani örneğin "1" == 1
doğrudur, çünkü "1"
zorlar 1
. Ama "1" === 1
bir yanlış türleri eşleşmiyor çünkü. ( "1" !== 1
true.) "İlk (gerçek) adım ===
" İşlenenlerin türleri aynı mı? " ve cevap "hayır" ise, sonuç olur false
. Türler aynıysa, tam olarak ne ==
yapar.
Tip baskısı oldukça karmaşık kurallar kullanır ve şaşırtıcı sonuçlar verebilir (örneğin, "" == 0
doğrudur).
Daha fazla spec:
==
"gevşek" eşitlik olarak da bilinir)===
)if (a) { ... }
anlamına gelir a
, burada "doğruluk" sıfırdan farklı, sıfırdan farklı, tanımsız, yanlış olmayan, boş olmayan bir dize değeridir. :-)
null
Bir nesne olmadığı , "nesne yok" anlamına gelen bir nesne referansı olduğu doğrudur . De (örneğin, onlar nesne başvurularını sağladığınızda konak sağlanan arayüzlerle kullanılır fakat sağlamak bir yok ne çünkü bu önemlidir node.nextSibling
zaman node
ailesindeki son öğedir veya getElementById
bu kimliğe sahip herhangi bir öğe olduğu zaman). Ana bilgisayarın bunun için kullandığı teknoloji, JavaScript değişken / özellik türleri hakkında olduğu kadar esnek olmayabilir, bu nedenle null
(aksine undefined
) obj ref'ye sahip olmak gerekiyordu .
typeof null
"nesne" nin geri döndürülmesi mantıklıdır. Mantıklı olacak diğer tek değer "null" olacaktır, çünkü kesinlikle farklı bir şey döndürmelidir typeof undefined
. null, en azından, onu tutan değişkenin bir tür 'nesne' için kastedildiği anlamına gelen bir null nesne referansını temsil eder. Eğer bir hata olsaydı, iyi bir hataydı. Her neyse, cevapla ilgili olarak, çapraz pencere komut dosyası oluşturma sırasında undefined
! == hakkında ipucunu undefined
bilmek, özellikle hata ayıklama amacıyla iyidir.
Fark incedir.
JavaScript'te bir undefined
değişken, hiçbir zaman bildirilmeyen veya hiçbir zaman değer atanmayan bir değişkendir. Let Diyelim ki beyan söylemek var a;
mesela, o zaman a
olacakundefined
asla bir değer atanmamış olduğu .
Ama o zaman atarsanız o a = null;
zaman a
şimdi olacak null
. JavaScript'te null
bir nesnedir ( typeof null
bana inanmıyorsanız bir JavaScript konsolunda deneyin ), bu da null değerinin (aslındaundefined
bir değerdir).
Misal:
var a;
typeof a; # => "undefined"
a = null;
typeof null; # => "object"
Bu işlev argümanlarında faydalı olabilir. Varsayılan bir değere sahip olmak isteyebilirsiniz, ancak null değerinin kabul edilebilir olduğunu düşünebilirsiniz. Bu durumda şunları yapabilirsiniz:
function doSomething(first, second, optional) {
if (typeof optional === "undefined") {
optional = "three";
}
// do something
}
Eğer atlarsanız optional
parametre doSomething(1, 2) then
isteğe bağlı olacak "three"
dize ancak geçmek eğer doSomething(1, 2, null)
o zaman isteğe bağlı olacaknull
.
Eşit ==
ve kesinlikle eşit ===
karşılaştırıcılara gelince , birincisi zayıf tiptir, kesinlikle eşittir de değer türlerini kontrol eder. Bu, bunun 0 == "0"
doğru olacağı anlamına gelir ; while 0 === "0"
değeri bir dize olmadığı için false değerini döndürür.
Bu işleçleri kullanarak undefined
bir null
. Örneğin:
null === null # => true
undefined === undefined # => true
undefined === null # => false
undefined == null # => true
Son durum ilginçtir, çünkü bir değişkenin tanımsız veya boş olup olmadığını kontrol etmenize izin verir ve başka bir şey yoktur:
function test(val) {
return val == null;
}
test(null); # => true
test(undefined); # => true
Spec bu soruların tam cevapları için gidilecek yerdir. İşte bir özet:
x
şunları yapabilirsiniz:null
kullanarak doğrudan karşılaştırma olup olmadığını kontrol edin ===
. Misal:x === null
undefined
iki temel yöntemden birini kullanıp kullanmadığını kontrol edin : undefined
veya ile doğrudan karşılaştırma typeof
. İçin çeşitli nedenlerle , ben tercih typeof x === "undefined"
.null
ve undefined
kullanarak ==
ve ortalama bu biraz gizli tip zorlama kuralları güvenerek x == null
tam olarak ne istediğinizi yapar.==
ve ===
işlenenler farklı türde ise, yani ===
her zaman dönecektir false
ederken ==
kullanarak aynı türden bir veya her iki işlenen dönüştürür kuralları kurşun bazı hafif unintuitive davranışlara. İşlenenler aynı türdeyse (örn. Her ikisi de typeof
yukarıdaki karşılaştırmada olduğu gibi dizelerdir ) ==
ve ===
tam olarak aynı şekilde davranırsa.Daha fazla okuma:
Boş veya tanımsızsa bir değişkeni nasıl kontrol ederim
bir değişkenin geçerli bir değere sahip olup olmadığını kontrol etmeniz yeterlidir:
if(variable)
değişken aşağıdakileri içermiyorsa true değerini döndürür:
Tanımsız
Bu, değişkenin henüz başlatılmadığı anlamına gelir.
Misal :
var x;
if(x){ //you can check like this
//code.
}
eşittir (==)
Sadece kontrol değeri veri tipine eşit değildir.
Misal :
var x = true;
var y = new Boolean(true);
x == y ; //returns true
Çünkü sadece değeri kontrol eder.
Katı Eşittir (===)
Değer ve veri tipinin aynı olup olmadığını kontrol eder.
Misal :
var x = true;
var y = new Boolean(true);
x===y; //returns false.
Çünkü veri tipini kontrol eder, x ilkel bir tiptir ve y bir boolean nesnesidir.
Reklam 1. null
, genel nesnenin bir özelliği için tanımlayıcı değildir undefined
.
Reklam 2. ===
Kontrol değerleri ve türleri. ==
Do not (kullanarak karşılaştırma öncekiyle aynı tip ve yapılan örtük dönüşüm gerektiren .valueOf()
ve .toString()
). Burada hepsi var ( src ):
Eğer
== (olumsuzlaması ! = )
=== (olumsuzlaması ! == )
document.all == null
vedocument.all !== null
(Mantıksal) çekiniz bir olumsuzlama (!) İçinse null
ve hem JS'yi undefined
( hem de farklı Tarayıcılar size farklı sonuçlar vereceğinden) yakalamak istiyorsanız , daha az kısıtlayıcı karşılaştırmayı kullanırsınız: örneğin:
var ItemID = Item.get_id();
if (ItemID != null)
{
//do stuff
}
Bu, hem yakalayacaktır null
veundefined
Farklı Mantık ile deneyin . Dört (4) koşulun tümünü null değil, boş değil, tanımsız değil ve sıfır değil, yalnızca javascript ve jquery'de bu kodu (! (! (Değişken))) doğrulamak için kontrol etmek için feryat kodunu kullanabilirsiniz.
function myFunction() {
var data; //The Values can be like as null, blank, undefined, zero you can test
if(!(!(data)))
{
//If data has valid value
alert("data "+data);
}
else
{
//If data has null, blank, undefined, zero etc.
alert("data is "+data);
}
}
==
ve arasındaki fark burada===
iyi açıklanmıştır .