JavaScript üçün null yoxlayın undefined və == və === arasındakı fərq

Bilirəm ki, bu mövzuda bəzi mövzular olmalıdır. Amma axtarışdan istifadə etdim və ehtiyaclarımın cavabına cavab vermirdim. Beləliklə, gedək:

  • null və ya undefined bir dəyişən yoxlamaq və nullundefined arasında fərq nədir?

  • "==" və "===" (Google üçün === tapmaq çətin) arasındakı fərq nədir?

507
24 февр. 24 fevralda MUG4N tərəfindən təyin olundu. 2011-02-24 11:10 '11 11:10 'da 2011-02-24 11:10
@ 8 cavab

null və ya undefined bir dəyişən yoxlamaq üçün necə ...

Değişken null :

 if (a === null) // or if (a == null) // but see note below 

... ancaq undefined halda sonuncu da doğru olacağını qeyd edin.

Bu undefined :

 if (typeof a === "undefined") // or if (a === undefined) // or if (a == undefined) // but see note below 

... yenə də qeyd edək ki, ikincisi dumanlıdır; a null olduqda bu da doğru.

İndi, yuxarıda göstərilənlərə baxmayaraq, bu onların yalan olduğunun yoxlanılmasının adi üsuludur:

 if (!a) { // `a` is falsey, which includes `undefined` and `null` // (and `""`, and `0`, and `NaN`, and [of course] `false`) } 

Bu spesifikasiyada ToBoolean tərəfindən müəyyən edilir.

... və nullundefined arasındakı fərq nədir?

Bu dəyərlərin hər ikisi də bir şeyin olmamasını göstərmək üçün istifadə olunur. undefined daha ümumidir, funksiya çağırıldıqda təyin olunmayan funksiya argümanlarının dəyəri kimi, başqa bir dəyər verildikdən və dəyişikliklər üçün u mənim dəyər kimi istifadə olunur və funksiya üçün obyektin soruşulduğunda aldığınız dəyər kimi onun yoxluğu. Lakin bütün bu hallarda açıq şəkildə istifadə edilə bilər. (Bir mülkiyyətə malik undefinedundefined bir dəyəri olan bir obyektin arasında bir fərq var, bir arqument üçün undefined bir dəyər ilə funksiyanı çağırmaq və mübahisəni tamamilə tərk etmək arasında fərq var.)

null müəyyən undefined null qədər daha undefined : bu, boş bir obyekt istinad edir. Əlbəttə ki, JavaScript açıq şəkildə çap olunur, lakin JavaScript ilə əlaqəli olan hər şey sərbəst şəkildə işə salınır. Brauzerlərdə DOM-a oxşar API bir obyekt arayışına ehtiyac duyarsa boş, biz null , qeyri- undefined . Və oxşar olaraq, DOM əməliyyatı getElementById bir obyektə bir istinad verir - ya etibarlı (əgər DOM elementi getElementById ) və ya null (əgər olmadıqda).

Maraqlı (və ya olmasın) bunlar öz növləridir. Null, Null tipində yeganə dəyərdir və undefined Undefined tipdəki yeganə dəyərdir.

"==" və "===" arasında fərq nədir?

İki arasındakı fərqi == dəyərlər birləşdirməyə cəhd növü təzyiqi yerinə yetirir, lakin === olmaz. Məsələn, "1" == 1 doğru, çünki "1" yanaşma 1 . Lakin "1" === 1 yanlışdır, çünki növləri uyğun deyil. ( "1" !== 1 doğru.) İlk (real) addım === : "Əməliyyat növləri eynidır?" və cavab yoxsa, nəticəsidir. Növləri uyğunlaşsa, tam olaraq nə edir == .

Məcburi növü olduqca mürəkkəb qaydaları istifadə edir və gözlənilməz nəticələrə səbəb ola bilər (məsələn, "" == 0 doğru).

Xüsusiyyətdə daha çox:

837
24 февр. Cavab TJ Crowder tərəfindən verilir 24 fevral. 2011-02-24 11:15 '11 11:15 'da 2011-02-24 11:15

Fərqi incə.

JavaScript-də, dəyişən undefined bir bəyan edilməmiş və ya heç bir dəyər təyin undefined bir dəyişəndir. Məsələn deyirsiniz, məsələn, var a; , onda a təsəvvür olmaz, çünki heç bir dəyər verilməmişdir.

Ancaq a = null; təyin etsəniz a = null; sonra a iradə null . JavaScript-də, null bir obyekt var (mənə inanmırsanız JavaScript konsolunda typeof null cəhd edin), yəni dəyər null bir dəyər (əslində, hətta bir təsəvvür belə deyil) deməkdir.

Məsələn:

 var a; typeof a; # => "undefined" a = null; typeof null; # => "object" 

Bu, funksional arqumentlərdə faydalı ola bilər. Varsayılan bir dəyərə sahib ola bilərsiniz, lakin null qəbul edilə bilər. Bu halda:

 function doSomething(first, second, optional) { if (typeof optional === "undefined") { optional = "three"; } // do something } 
border=0

Əgər optional doSomething(1, 2) then parametresini doSomething(1, 2) then , optional doSomething(1, 2) then "three" , ancaq doSomething(1, 2, null) isteğe bağlı olacaq.

Bərabər == və ciddi bərabər === müqayisə === gəldikdə, birinci zəif tiplidir və ciddi bərabərdir, həmçinin dəyərlərin növünü yoxlayır. Bu, 0 == "0" həqiqətə dönəcək deməkdir; və 0 === "0" yanlış qaytarır, çünki rəqəm ədədi deyil.

Bu operatorları undefined bir null yoxlamaq üçün istifadə edə bilərsiniz. Məsələn:

 null === null # => true undefined === undefined # => true undefined === null # => false undefined == null # => true 

Sonuncu vəziyyət maraqlıdır, çünki siz dəyişənin ya müəyyənləşdirilmədiyini və ya sıfır olub-olmadığını və başqa bir şey olmadığını yoxlamağa imkan verir:

 function test(val) { return val == null; } test(null); # => true test(undefined); # => true 
86
02 окт. Julien Portalier tərəfindən verilmiş cavab 02 Oct 2012-10-02 15:20 '12 at 15:20 2012-10-02 15:20

Spektrum bu suallara tam cavab ala biləcəyiniz bir yerdir. Burada bir xülasə:

  • Değişken x üçün aşağıdakıları edə bilərsiniz:

    • === ilə birbaşa müqayisədə null olmadığını yoxlayın. Məsələn: x === null
    • bu iki əsas metoddan birinin undefined yoxlayın: typeof və ya typeof ilə birbaşa müqayisə. Fərqli səbəblərdən typeof x === "undefined" .
    • x == null demək, məhz istədiyiniz şeyi edir, bir az sirli növü ilə məcburi qaydalarına əsaslanır və == istifadə və nullundefined bir olub-olmadığını yoxlayın.

  • ===== arasındakı əsas fərq, əgər operandlar fərqli olsa, === hər zaman false== bir və ya hər ikisini eyni tipə çevirir, bəzi Bir az qeyri-intuitiv davranış. typeof eyni typeof (məsələn, hər iki simli, məsələn, yuxarıda typeof müqayisədə) ===== eyni şəkildə davranacaq.

Əlavə məlumat:

14
04 окт. Cavab 04 okt Tim Down tərəfindən verilir . 2012-10-04 12:32 '12 at 12:32 2012-10-04 12:32

undefined

Yəni dəyişən hələ təyin olunmadığı anlamına gəlir.

Məsələn:

 var x; if(x){ //you can check like this //code. } 

bərabərdir (==)

Yalnız çek dəyər məlumat tipi deyil.

Məsələn:

 var x = true; var y = new Boolean(true); x == y ; //returns true 

Çünki yalnız dəyəri yoxlayır.

Güclü bərabərdir (===)

Qiymət və məlumatın növü eyni olmalıdır ki, təsdiqləyir.

Məsələn:

 var x = true; var y = new Boolean(true); x===y; //returns false. 

Məlumatın tipini yoxladığı üçün x, ibtidai tipdir və y bir boolean obyektdir.

7
03 окт. Cavab kannanrbk 03 oktyabr verilir . 2012-10-03 20:36 '12 at 8:36 pm 2012-10-03 20:36

Null və ya undefined bir dəyişən yoxlamaq üçün

yalnız dəyişənin etibarlı dəyəri olub olmadığını yoxlayın:

 if(variable) 

dəyişəndə ​​olmadıqda doğru qaytarır:

  • Null
  • undefined
  • 0
  • bir yalan
  • "" (boş simli)
  • NaN
1
04 авг. cavab Sumit Joshi 04 aug tərəfindən verilir . 2017-08-04 16:14 '17 saat 16:14 'da 2017-08-04 16:14

Yalnızca javascript və jquery-də yalnız bu kodu istifadə edin (! (! (Değişken))), istifadə etmək üçün bütün dörd (4) şərtləri yoxlamaq üçün, aşağıdakı kodu istifadə edin, məsələn sıfır deyil, boş deyil, müəyyənləşdirilmir və sıfır deyil.

 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); } 

}

0
31 янв. cavab 31 yanvar Ravikant tərəfindən verilir 2019-01-31 15:01 '19 'da saat 15.00' də 2019-01-31 15:01

Sizin (məntiqi) yoxlamanın mənfi olması nəzərdə tutulsa (!) Və JS-ni həm nullundefined (müxtəlif brauzerlər fərqli nəticələr verəcəyinə görə) tutmaq istəyirsən, daha az məhdudlaşdıran müqayisə istifadə edərsiniz: məsələn:

 var ItemID = Item.get_id(); if (ItemID != null) { //do stuff } 

Bu, həm nullundefined düzəldir undefined

0
03 марта '17 в 21:26 2017-03-03 21:26 Cavab DaniDev 03 mart 'da 21:26 2017-03-03 21:26' də verildi

null və ya undefined yoxlamaq istəyirsinizsə, lakin saxta sadəlik etibar undefined , bu yenidən istifadə edilə bilər komponenti-nil istifadə edə bilərsiniz, bu val istinad sıfır və ya müəyyən deyil olub müəyyən edir.

Nümunələr:

 isNil(null) // => true isNil('') // => true 

Boş bir simli üçün, məsələn, yanlış qaytarır.

-1
05 июня '17 в 11:46 2017-06-05 11:46 Cavab Yoni tərəfindən 05 iyun '17' də saat 11:46 2017-06-05 11:46 'də verilir

tags ilə bağlı digər suallar və ya bir sual