Öyle olmadığını nasıl bir değişken kontrol ederim
nullyaundefinedarasındaki fark nedirnullveundefined?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 nullya undefinedarasındaki fark nedir nullve 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
nullveyaundefined...
Değişken null:
if (a === null)
// or
if (a == null) // but see note below
... ama eğer de geçerlidir olacak ikincisi not aolduğ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 aolan 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
nullveundefined?
Her ikisi de genellikle bir şeyin olmadığını göstermek için kullanılan değerlerdir. undefineddaha 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 undefinedarasında bir fark vardır; undefinedbir 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 .)
nullbiraz 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 nullNull türündeki undefinedtek 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" == 1doğrudur, çünkü "1"zorlar 1. Ama "1" === 1bir yanlış türleri eşleşmiyor çünkü. ( "1" !== 1true.) "İ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, "" == 0doğ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. :-)
nullBir 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.nextSiblingzaman nodeailesindeki son öğedir veya getElementByIdbu 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 undefinedbilmek, özellikle hata ayıklama amacıyla iyidir.
Fark incedir.
JavaScript'te bir undefineddeğ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 aolacakundefined asla bir değer atanmamış olduğu .
Ama o zaman atarsanız o a = null;zaman aşimdi olacak null. JavaScript'te nullbir nesnedir ( typeof nullbana 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 optionalparametre doSomething(1, 2) thenisteğ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 undefinedbir 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:nullkullanarak doğrudan karşılaştırma olup olmadığını kontrol edin ===. Misal:x === nullundefinediki temel yöntemden birini kullanıp kullanmadığını kontrol edin : undefinedveya ile doğrudan karşılaştırma typeof. İçin çeşitli nedenlerle , ben tercih typeof x === "undefined".nullve undefinedkullanarak ==ve ortalama bu biraz gizli tip zorlama kuralları güvenerek x == nulltam olarak ne istediğinizi yapar.==ve ===işlenenler farklı türde ise, yani ===her zaman dönecektir falseederken ==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 typeofyukarı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 == nullvedocument.all !== null
(Mantıksal) çekiniz bir olumsuzlama (!) İçinse nullve 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 nullveundefined
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 .