Javascript-də undefined bir dəyişəni necə yoxlamaq olar

Bir dəyişənin müəyyən olub olmadığını yoxlamaq istəmişdim. Məsələn, aşağıdakılar müəyyən edilməyən bir səhv çıxarır.

 alert( x ); 

Bu səhvəni necə tuta bilərəm?

803
13 мая '09 в 17:09 2009-05-13 17:09 Jineesh, 13 May 'da 17:09' da soruşdu 2009-05-13 17:09
@ 14 cavab

JavaScript-də null bir obyektdir. Var olmayan şeylər üçün başqa bir dəyər var, undefined . DOM sənəddə hər hansı bir strukturu tapmaq mümkün olmadığı demək olar ki, bütün hallarda null qaytarır, lakin dəyəri özü JavaScript-də özü deyil.

İkincisi, yox, birbaşa ekvivalent yoxdur. Həqiqətən null yoxlamaq istəyirsinizsə, bunu:

 if (yourvar === null) // Does not execute if yourvar is 'undefined' 

Bir dəyişən olub-olmadığını yoxlamaq istəyirsinizsə, bu, yalnız typeof dəyişənliyi idarə edəcək və dəyişənə bərabər olaraq undefined typeof dəyəri ilə elan edildikdən sonra bu try / typeof edilə bilər.

Lakin, bir dəyişənin elan edilmədiyini və qeyri- undefined olmadığını yoxlamaq üçün:

 if (typeof yourvar !== 'undefined') // Any scope 

Əgər bir dəyişən var olduğunu bilirsinizsə və onda hər hansı bir dəyəri olmadığını yoxlamaq istəyirsinizsə:

 if (yourvar !== undefined) 

Bir üzvün müstəqil olaraq mövcud olub olmadığını bilmək istəyirsinizsə, ancaq onun mənası ilə maraqlanmırıq:

 if ('membername' in object) // With inheritance if (object.hasOwnProperty('membername')) // Without inheritance 

Bir dəyişən doğru olub olmadığını bilmək istəyirsinizsə:

 if (yourvar) 

Mənbə

1550
13 мая '09 в 17:11 2009-05-13 17:11 Cavab Natrium tərəfindən 13 May 'da 17:11' də verildi. 2009-05-13 17:11

undefined həqiqətən yoxlamaq üçün yeganə yol belədir. Unutmayaq ki javascript bir obyektdir.

 if (typeof someVar === 'undefined') { // Your variable is undefined } 
border=0

Bu mövzudakı digər həllərin bəziləri müəyyən edilmiş olmasına baxmayaraq, dəyişənin müəyyən edilməməsinə inanır (məsələn, NULL və ya 0 kimi).

312
13 мая '09 в 17:53 2009-05-13 17:53 13 May 'da 17:53' də Maykl Gallerə cavab verdi 2009-05-13 17:53

Texniki cəhətdən, doğru qərar (məncə):

 typeof x === "undefined" 

Bəzən tənbəl ola bilər və istifadə edə bilərsiniz

 x == null 

lakin bu, həm də undefined x dəyişənə və n dəyişən x dəyişənə doğru dönməyə imkan verir.

61
13 мая '09 в 17:12 2009-05-13 17:12 Cavab Jason S tərəfindən 13 May 'da 17:12' də verildi. 2009-05-13 17:12

Mən çox vaxt:

 function doSomething(variable) { var undef; if(variable === undef) { alert('Hey moron, define this bad boy.'); } } 
14
13 мая '09 в 17:45 2009-05-13 17:45 13 may 09: 17-də Joe- a cavab verərək, 2009-05-13 17:45

Daha asan və daha qısa versiyası:

 if (!x) { //Undefined } 

Və ya

 if (typeof x !== "undefined") { //Do something since x is defined. } 
14
13 мая '09 в 17:26 2009-05-13 17:26 Cavab Dmitri Farkov tərəfindən 13 May 'da 17:26' də verildi. 2009-05-13 17:26

Üçlü şərti operatoru da istifadə edə bilərsiniz:

3
12 февр. Cavab 12 fevralda John tərəfindən verilir . 2016-02-12 15:02 '16 at 15:02 2016-02-12 15:02

Digər potensial "həll" bir window obyektindən istifadə etməkdir. Bu brauzer olduğunda link səhvlərin problemlərini aradan qaldırır.

 if (window.x) { alert('x exists and is truthy'); } else { alert('x does not exist, or exists and is falsy'); } 
2
13 нояб. cavab noyabrın 13-də ubershmekel verilir 2017-11-13 23:16 '17 saat 11:16 'də 2017-11-13 23:16

Mən tez-tez ən asan yolu istifadə edirəm:

 var variable; if (variable === undefined){ console.log('Variable is undefined'); } else { console.log('Variable is defined'); } 

EDIT:

Değişkeni başlatmadan, istisna "Uncaught ReferenceError: dəyişən müəyyən edilmədi ..."

1
09 дек. mokiSRB tərəfindən verilmiş cavab 09 dekabr . 2015-12-09 11:44 '15 at 11:44 'de göndərilib

void operatoru, hər hansı bir arqument / ifadəyə ötürülməmiş dəyərini qaytarır. belə ki, nəticəni yoxlaya bilərsiniz (əslində, bir neçə simvol saxlamaq üçün bir neçə minifiers kodunuzu qeyri-müəyyəndən 0-ə dəyişir)

Məsələn:

 void 0 // undefined if (variable === void 0) { // variable is undefined } 
0
02 июля '18 в 17:07 2018-07-02 17:07 Cavab verilir svarog 02 iyul '18 saat 17:07 2018-07-02 17:07

Aşağıdakı kimi bir şey edin:

 function isNotDefined(value) { return typeof value === "undefined"; } 

və bu kimi ad:

 isNotDefined(undefined); //return true isNotDefined('Alireza'); //return false 
0
31 янв. Cavab 31 yanvar tarixində Alireza tərəfindən verilir . 2019-01-31 15:08 '19 at 15:08 2019-01-31 15:08

Qəbul edilmiş cavab düzgündür. Yalnız başqa bir seçim əlavə etmək istədi. Bu vəziyyəti həll etmək üçün try ... catch da istifadə edə bilərsiniz. Fancy nümunəsi:

 var a; try { a = b + 1; // throws ReferenceError if b is not defined } catch (e) { a = 1; // apply some default behavior in case of error } finally { a = a || 0; // normalize the result in any case } 

Bir blok səviyyəli ərazini yaratdığından, bir az qeyri-adi olan catch nəzərə alın. Və əlbəttə, nümunə soruşulan suallara cavab vermək üçün son dərəcə sadələşdirilmişdir, ən yaxşı səhv idarə üsullarını əhatə etmir;).

0
11 авг. Evgeny Savichev tərəfindən verilmiş cavab 11 avqust. 2017-08-11 20:25 '17 saat 20:25 'da 2017-08-11 20:25

Aşağıdakı kimi undefined ola bilərik

 var x; if (x === undefined) { alert("x is undefined"); } else { alert("x is defined"); } 
0
04 июля '16 в 20:17 2016-07-04 20:17 Cavab Arshid KV tərəfindən 04 İyun '16 'da 20:17 2016-07-04 20:17' də verilir

Bir dəyişənin həqiqətən javascript fayllarımdakı dağıntı miqdarını azaldıb elan etdiyini yoxlamaq üçün kiçik bir funksiyadan istifadə edirəm. Değişkenin yalnız mövcud olmadığından emin olmaq üçün bir değer kontrolü əlavə edirəm, həm də ona təyin edilmiş bir dəyəri var. İkinci şərt, dəyişənin də yaradılıb-yoxlanılmadığını yoxlayır, çünki əgər dəyişən müəyyən edilərsə, yaradıla bilməzsə (aşağıda bax), kodunuzdakı dəyərinə istinad etməyə çalışarsanız bir səhv yaradır.

var my_variable; - var my_variable; Yaradıldı - var my_variable = "";

 function varExists(el) { if ( typeof el !== "undefined"  typeof el.val() !== "undefined" ) { return true; } else { return false; } } 

Sonra dəyişən müəyyən edilmiş və yaradılmışdır ki, yoxlamaq üçün şərti operator istifadə edə bilərsiniz ...

 if ( varExists(variable_name) ) { // checks that it DOES exist } 

ya da müəyyən edilmədiyini və istifadə edilmədiyini yoxlayın ...

 if( !varExists(variable_name) ) { // checks that it DOESN'T exist } 
0
05 июля '18 в 20:48 2018-07-05 20:48 Cavab MistyDawn tərəfindən 05.07.2008 20:48 2018-07-05 20:48 tarixində verilir

Səhv, x belə olmadığını söyləyir! Qiymətin təyin edilməsindən fərqli olan elan edilmədi.

 var x; // declaration x = 2; // assignment 

x , səhv ala bilməzsiniz. x siz mövcuddur / elan edilmiş, lakin bir dəyər təyin edilmədiyi üçün undefined bir xəbərdarlıq alacaqsınız.

Bir dəyişənin elan edilmiş olub olmadığını yoxlamaq üçün typeof istifadə edə bilərsiniz, bir dəyişən var olub olmadığını yoxlama üsulu əvvəlcə aldığınız eyni səhvdir.

 if(typeof x !== "undefined") { alert(x); } 

Bu, xdə saxlanılan dəyərin növünün yoxlanışıdır. Bəyan edilmiş və hələ təyin edilməmişsə, bu, x elan edilmədiyi təqdirdə, müəyyən edilməyəcəkdir.

0
10 янв. Cavab JBallin Jan 10 tərəfindən verilir 2018-01-10 09:33 '18 saat 09:33 'da 201-01-01 09:33

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