Değişkenin "tanımlanmamış" və ya "null" olub olmadığını nasıl belirleyebilirim?

Bir dəyişənin undefined və ya null necə undefined olar? Mənim kodum belə görünür:

 <div id="esd-names"> <div id="name"></div> </div> 

Amma bunu yaparsam JavaScript yorumlayıcısı icra dayandırır.

1745
15 апр. cadmicrowave qurmaq 15 Apr 2010-04-15 21:12 '10 at 21:12 2010-04-15 21:12
@ 27 cavab

Müstərlif bərabərlik operatorunun xüsusiyyətlərini istifadə edə bilərsiniz:

 if (variable == null){ // your code here. } 

null == undefined olduğundan, yuxarıda göstərilən kod hər ikisini də nullundefined tutacaq.

2393
15 апр. Cavab Sarfraz 15 apr verilir . 2010-04-15 21:14 '10 at 21:14 2010-04-15 21:14

null və eyni zamanda undefined standart yol:

 if (variable == null) { // do something } 

- daha aydın, lakin az qısa 100% ekvivalent:

 if (variable === undefined || variable === null) { // do something } 

Professional JS yazarkən, === bu növü bərabərlik və davranış == vs === olmadan gedir. Buna görə == istifadə edirik və yalnız null müqayisə edirik.

border=0

Yenidən dəyişdirin

typeof istifadə typeof təklif edən şərhlər sadəcə yanlışdır. Bəli, mənim həllim, dəyişən yoxdursa ReferenceError çağırır. Bu yaxşı bir şeydir. Bu ReferenceError arzuolunandır: səhvlər tapmaq və kodunuzu göndərməzdən əvvəl onları düzəltmək, kompüter səhvlərinin digər dillərdə olduğu kimi.

Kodunuzdaki bildirilməmiş dəyişənlərə istinad etməməlisiniz.

981
22 янв. cavab 22 yanvar tarixində müvəqqəti olaraq verilir 2014-01-22 06:01 '14 saat 06:01 AM 2014-01-22 06:01
 if (variable == null) { // Do stuff, will only match null or undefined, this won't match false } 
179
15 апр. cavab user216441 15 apr tərəfindən verilir . 2010-04-15 21:25 '10 at 21:25 2010-04-15 21:25

Yuxarıdakı cavabları birləşdirmək ən tam cavab kimi görünür:

 if( typeof variable === 'undefined' || variable === null ){ // Do stuff } 

Bu, ya elan edilməmiş və ya bəyan edilmiş və açıq şəkildə null və ya müəyyən edilməyən hər hansı bir dəyişən üçün işləməlidir. Bir Boole ifadəsi faktiki olaraq sıfır olmayan dəyəri olan hər hansı bir elan edilmiş dəyişən üçün yanlış olaraq qiymətləndirilməlidir.

176
11 окт. jkindwall 11 oct tərəfindən verilən cavab . 2013-10-11 20:02 '13 at 20:02 2013-10-11 20:02
 if (typeof EmpName != 'undefined'  EmpName) { 

dəyər müəyyən edilmədikdə doğru qiymətləndiriləcəkdir:

  • sıfır

  • müəyyən edilmədi

  • NaN

  • boş simli ("")

  • 0

  • yanlış

81
07 мая '15 в 10:24 2015-05-07 10:24 Cavab 07 may 2014-cü il saat 10: 00-da Thamaraiselvam'a verilir. 2015-05-07 10:24
Funksiyası

jQuery attr() boş bir simli və ya faktiki dəyəri qaytarır (və heç vaxt null və ya undefined ). Seçicisinin hər hansı bir elementi geri vermədiyi zaman undefined yeganə vaxtdır.

Boş simli test edə bilərsiniz. Alternativ olaraq boş satırlar boş və undefined yalan-y olduğundan, bunu sadəcə edə bilərsiniz:

 if (!EmpName) { //do something } 
22
15 апр. Cavab Chetan Sastry 15 apr verilir. 2010-04-15 21:20 '10 at 21:20 2010-04-15 21:20

Bunu istifadə etmək istəyirəm:

 if (!!variable) { //do something } 

Həm nullundefined olarsınız .

11
16 сент. Cavab abyrne85 sentyabr 16 verildi 2016-09-16 11:35 '16 saat 11:35 'də 2016-09-16 11:35' a qədər

Kontrol etmək istədiyiniz dəyişən qlobal olarsa, bunu edin

 if (window.yourVarName) { // Your code here } 

Bu üsul, yourVarName dəyişən yourVarName , bir səhv yourVarName .

Məsələn: brauzerimin tarixi API'ları dəstəklədiyini bilmək istərdim.

 if (window.history) { history.back(); } 

Necə işləyir?

window , bütün qlobal dəyişənləri öz xüsusiyyətləri olan bir obyektdir və JavaScript-də qeyri-mövcud obyektə giriş əldə etməyə çalışmaq qanuni. Əgər history mövcud deyilsə, window.history qaytarılmır. undefined false, belə ki, if(undefined){} kodu if(undefined){} blok işləməyəcək.

9
10 февр. DenisS 10 fevralda cavab verin 2014-02-10 19:30 '14 saat 19:30 'da 2014-02-10 19:30

Bunun üçün öz funksiyam yazmağa gəldim. Javascript qəribədir

Tam sözlə istifadə edə bilərsiniz. (Qeyd edək ki, bu da dəyişəndə ​​istifadə olunan hər hansı bir dəyərin olmadığını yoxlayır, amma bu məlumat adətən də lazım olduğu üçün, mən hesab edirəm ki, dərc etməyə dəyər). Bir not buraxın.

 function empty(v) { let type = typeof v; if (type === 'undefined') { return true; } if (type === 'boolean') { return !v; } if (v === null) { return true; } if (v === undefined) { return true; } if (v instanceof Array) { if (v.length < 1) { return true; } } else if (type === 'string') { if (v.length < 1) { return true; } if (v === '0') { return true; } } else if (type === 'object') { if (Object.keys(v).length < 1) { return true; } } else if (type === 'number') { if (v === 0) { return true; } } return false; } 

Yazmağa uyğun.


Düzəliş edin. bu funksiya php empty() funksiyası ilə eyni şeyi etməlidir (bax RETURN VALUES )

undefined , null , false , 0 , 0.0 , "0" {} , [] boş olaraq sayılır.

"0.0" , NaN , " " true , boş deyil.

7
24 окт. Blauhirn 24 oktyabrda cavab verdi . 2015-10-24 18:14 '15 'da 18:14' də, 2015-10-24 18:14

JQuery istifadə etdiyiniz üçün, dəyişənin müəyyənləşdirilmədiyini və ya dəyəri bir funksiyadan istifadə etmədiyini müəyyən edə bilərsiniz.

 var s; // undefined jQuery.isEmptyObject(s); // will return true; s = null; // defined as null jQuery.isEmptyObject(s); // will return true; // usage if(jQuery.isEmptyObject(s)){ alert('Either variable: s is undefined or its value is null'); }else{ alert('variable: s has value ' + s); } s = 'something'; // defined with some value jQuery.isEmptyObject(s); // will return false; 
6
08 июля '14 в 11:00 2014-07-08 11:00 Cavab Angelin Nadar tərəfindən 08 İyul 2014 'də saat 11:00' də veriləcək

Bu problem var idi, yəni obyektin sıfır olub olmadığını yoxlayın.
Yalnız istifadə edirəm:

 if (object) { Somecode} 

yəni.

 if (document.getElementById("enterJob")) document.getElementById("enterJob").className += ' current'; 
4
15 окт. Cavab 15 oktyabrda Welshboy tərəfindən verilir . 2013-10-15 19:44 '13 at 7:44 pm 2013-10-15 19:44

JQuery yoxlama maddələri null deyil

 var dvElement = $('#dvElement'); if (dvElement.length > 0) { //do something } else{ //else do something else } 
3
04 марта '15 в 20:10 2015-03-04 20:10 Cavab Kapil tərəfindən 04 Mart '15' də saat 20:10 'də verilir. 2015-03-04 20:10

Aşağıdakı həlli ilə:

 const getType = (val) => typeof val === 'undefined' || !val ? null : typeof val; const isDeepEqual = (a, b) => getType(a) === getType(b); console.log(isDeepEqual(1, 1)); // true console.log(isDeepEqual(null, null)); // true console.log(isDeepEqual([], [])); // true console.log(isDeepEqual(1, "1")); // false etc... 

Aşağıdakıları kontrol edə bilərəm:

  • sıfır
  • müəyyən edilmədi
  • NaN
  • boş
  • simli ("")
  • 0
  • yanlış
2
12 дек. Cavab Tony Tai Nguyen tərəfindən verilir 12 dekabr. 2017-12-12 13:29 '17 də 13:29 2017-12-12 13:29
 var i; if(i === null || typeof i === 'undefined'){ console.log(i,'i is undefined or null') }else{ console.log(i,'i has some value') } 
1
04 дек. Cavab KARTHIKEYAN.A 04 dekabr. 2016-12-04 03:10 '16 'da 3:10' də 2016-12-04 03:10

Ən yaxşı şəkildə:

 if(typeof variable==='undefined' || variable===null) {  } 
1
25 мая '16 в 14:55 2016-05-25 14:55 cavab 25 May '16' da 14:55 2016-05-25 14:55 Nishanth Matha tərəfindən verilir

Bu testi xrom konsolunda istifadə etməliyəm (void 0), qeyri-müəyyənləşdirə bilərsiniz

 var c; undefined if(c === void 0)alert(); // output = undefined var c = 1; // output = undefined if(c === void 0)alert(); // output = undefined // check c value c // output = 1 if(c === void 0)alert(); // output = undefined c = undefined; // output = undefined if(c === void 0)alert(); // output = undefined 
1
18 мая '16 в 23:10 2016-05-18 23:10 Cavab 18 may 'da saat 16:10' da, 2016-05-18 23:10 'də verilir
 (null == undefined) // true (null === undefined) // false 

Çünki === həm növü, həm də dəyəri yoxlayır. Hər ikisinin növü fərqlidir, ancaq məna eynidır.

0
27 мая '18 в 14:19 2018-05-27 14:19 cavab 27 may 18-də saat 14: 19-da Franklin Pious tərəfindən verilir

Siz typeof istifadə edərək dəyərin dəqiqləşdirilmədiyini və ya null olmadığını yoxlaya bilərsiniz:

 if(typeof value == 'undefined'){ 
0
26 июля '17 в 5:16 2017-07-26 05:16 cavab iyul ayının 26-da saat 5:16 ilə 2017-07-26 05:16 arasında gideon tərəfindən verilir

Null tipinə zəng xüsusi dəyər null obyektin boş istinad kimi qəbul edilir, çünki dəyəri "obyekt" qaytarır. Sürüm 5 və Chrome vasitəsilə versiya 7 vasitəsilə Safari, bir növbədə, normal bir ifadədə typeof çağırışı "funksiyası" qaytarır və bütün digər brauzerlər bir "obyekt" qayıdır.

-1
06 марта '14 в 14:24 2014-03-06 14:24 Cavab Jones Agyemang tərəfindən 06 Mart '14' də saat 14:24 'də veriləcək

Bəzi hallarda, undefined dəyəri dəyişə bilərsiniz. Onlar adətən nadir hallarda olsalar da, əslində undefined dəyərlərdən istifadə etməkdən çəkinmək daha yaxşıdır.

Nəticədə və yazmaq üçün daha sürətli olduğu üçün mən boş bir sıra dəyərinə baxmalı olan undefined bir etiket istifadə edirəm. Bu dəyər undefined edilməyən primitiv dəyər kimi təmin edilir və [][0] ilə əldə edilə bilər.

Bu çek, həm də undefinednull axtarış üçün işləyəcək.

Burada bir nümunə:

Mən jQuery istifadə orijinal post görmək. Yəni keçmişdə jQuery vasitəsilə istifadə etdiyimləri əlavə edirəm. Normal olaraq, belə bir çek edərkən, qiyməti yalnız bu məqsəd üçün null və ya qeyri-müəyyən olduğunu mütləq yoxlamam. Daha çox bəyənilən "dəyər var, buna görə də onun üzərində hərəkət edə bilərik." Buna görə də, mən bunun üçün istifadə edirəm. Hər növü sınamamışam, amma bilirəm ki, bu, həm boş, həm də qeyri-müəyyəndir. Bundan əlavə, obyektlər və seriallar (bu obyektlərin boş versiyası həqiqətə dönəcəkdir). Bundan əlavə, əlbəttə, əgər dəyişən yoxdur, bir istisna olacaqsınız, amma dürüstcə hər hansı bir şəkildə qarşısını almaq üçün çalışırıq. Buna görə də Aerovistae ilə razıyam. Bu barədə mənim kodumda bilmək istərdim və sadəcə onu atmaq istəmirəm.

 if ($.trim(value) != '') { //Do Something } 
-1
29 авг. Cavab verildi Eddie 29 Avqust 2018-08-29 22:22 '18 saat 10:22 'da 2018-08-29 22:22

Siz onu üsulla yoxlaya bilərsiniz -

 if(['object','undefined'].indexOf(typeof(variable)) != -1){ console.log("variable is null or undefined."); } 
-1
21 сент. Cavab Vivek Kumar 21 sep tərəfindən verilir . 2018-09-21 13:24 '18 saat 13:24 'da 2018-09-21 13:24

Bu çox köhnə bir sual, amma hələ də hesab edirəm ki, bu 2 şəraitin test edilməsinin ən yaxşı / təhlükəsiz yolu bir dəyərə keçməkdir:

 var EmpName = $("div#esd-names div#name").attr('class'); // Undefined check if (Object.prototype.toString.call(EmpName) === '[object Undefined]'){ // do something with your code } // Nullcheck if (Object.prototype.toString.call(EmpName) === '[object Null]'){ // do something with your code } 
-1
31 мая '17 в 10:47 2017-05-31 10:47 Cavab verilir: n1kkou 31 may '17 saat 10:47 2017-05-31 10:47
 var x; if (x === undefined) { alert ("only declared, but not defined.") }; if (typeof y === "undefined") { alert ("not even declared.") }; 

Yalnız ikinci istifadə edə bilərsiniz: həm tərifi həm də bəyannaməni yoxlayacaq

-1
15 авг. ceshav 15 aug tərəfindən verilmiş cavab . 2015-08-15 10:18 '15 at 10:18 'da 2015-08-15 10:18

Xüsusi bir işə görə 5 sentə olan töhfəm:

 var bUndef = ($('#' + selectedNodeID).position() === undefined) if (bUndef) .... 

Əmlak heç bir element tərəfindən müəyyən edilməmişdir!

-2
19 июля '15 в 19:23 2015-07-19 19:23 Cavab Sezar tərəfindən iyulun 19-da saat 19: 15-da 19:23, 2015-07-19 19:23

Dəyişənin null və ya müəyyən olmadığını yoxlamaq üçün aşağıdakı kodu istifadə edin.

  if(sVal === '' || sVal === null ||typeof sVal === 'undefined'){ console.log('variable is undefined or null'); } 
-3
03 марта '16 в 7:57 2016-03-03 07:57 cavab DanKodi 03.03 'də 07.03' də 07:57 'də verilir

if(x==null) javascriptdə pis bir fikir varsa, "==" olan bir hakim növün gözlənilməz bir məcburiyyətinə səbəb ola bilər və qəhvə scripti oxunmur, mühakimə şəraitində "==" və ya "! =" istifadə etməyin!

if(x) daha yaxşı olarsa. lakin 0 və "" bu " yalan " sayılır və "!= null" ilə bərabər bir üsul deyildir.

2019

05 авг. Cavab Albert.Qing verilir 05 avqu . 2017-08-05 08:06 '17 at 8:06 2017-08-05 08:06