Cismi javascriptdə olub olmadığını yoxlayın

Javascript bir obyektin varlığını necə yoxlamaq olar?

Aşağıdakı iş:

 if (!null) alert("GOT HERE"); 

Lakin bu uğursuzdur:

 if (!maybeObject) alert("GOT HERE"); 

Hata: Nesne müəyyən edilə bilməz.

217
15 нояб. Yarin tərəfindən 15 Noyabrda təyin olundu 2010-11-15 20:04 '10 at 20:04 2010-11-15 20:04
@ 15 cavab

typeof operatorunu etibarlı şəkildə dəyişənlər üçün undefined istifadə edə bilərsiniz.

Hər hansı bir dəyəri, null daxil olmaqla, təyin edildikdə typeof müəyyən edilməmiş başqa bir şey qaytarır. typeof hər zaman bir simli qaytarır.

Buna görə

 if (typeof maybeObject != "undefined") { alert("GOT THERE"); } 
422
15 нояб. Cavab 15 noyabr tarixində JAL verilir. 2010-11-15 20:08 '10 at 20:08 2010-11-15 20:08

Burada bir çox yarım həqiqət var, buna görə də bəzi şeyləri daha dəqiq başa düşürdüm.

Əslində, bir dəyişən var olub-olmadığını müəyyən edə bilməzsiniz (bir try-catch blokunda hər bir digər xəttin sarılmaq istəmədikcə).

Javascript bu dəyişməz dəyərə layiq deyildir, bu şəffaflıqla dəyişən müəyyən edilmədiyi və ya müəyyənləşdirilmədiyi demək deyildir undefined !== not defined

 var a; alert(typeof a); // undefined (declared without a value) alert(typeof b); // undefined (not declared) 
border=0

Beləliklə, mövcud olan bir dəyişən və başqa bir növü undefined başqa bir şey yoxdur.

@Kevin'in yanlış anlayışına gəlincə, null == undefined . Bu məcburiyyət növündən qaynaqlanır və bu, Crockford bu barədə əmin olmayan hər kəsə xəbərdarlıq etməyə davam edir, həmişə ciddi bərabərlik operatorunu istifadə edin === mümkün dəyərlərini yoxlamaq üçün. null !== undefined siz gözlədiyiniz şeyi verir. Ayrıca foo != null dəyişən nə undefinednull olmadığını yoxlamaq üçün effektiv bir yol ola bilər. Əlbəttə, aydın ola bilərsiniz, çünki oxunaqlığa kömək edə bilər.

Əgər bir obyektin mövcudluğunu yoxlamaq məsələsini məhdudlaşdırırsınızsa, typeof o == "object" demək deyil ki, əgər bir sıra obyektlər nəzərə alınmırsa, yaxşı bir fikir ola bilər, çünki bu da bir az qarışıq olan bir object növü kimi görünəcəkdir. typeof null də sizə sadəcə bir object verəcəkdir.

typeof , undefined , null , unknown və digər səhvlər haqqında həqiqətən diqqətli olmaq lazım olan əsas sahə ev sahibi obyektlərdir. Onlara etibar edilə bilməz. Onlar istədiyiniz hər hansı bir çirkli şeyi edə bilərlər. Onlara görə diqqətli olun, mümkün olduqda funksiyanı yoxlayın, çünki bu hətta mövcud olmayan bir funksiyanı istifadə etmək üçün yeganə təhlükəsiz yoldur.

40
15 нояб. Qalambalazlar tərəfindən verilən cavab 15 noyabr. 2010-11-15 21:53 '10 at 21:53 2010-11-15 21:53

Siz istifadə edə bilərsiniz:

 if (typeof objectName == 'object') { //do something } 
7
15 нояб. Cavab 15 noyabr tarixində Calvin tərəfindən verilir. 2010-11-15 20:07 '10 at 20:07 2010-11-15 20:07

Bu, qlobal bir obyektdirsə, if (!window.maybeObject)

5
15 нояб. Cavab Nikita Rybak tərəfindən 15 noyabrda verilir 2010-11-15 20:06 '10 at 20:06 2010-11-15 20:06

İki yol.

Yerli dəyişənlər üçün typeof

Typeof istifadə edərək, lokal obyekti yoxlaya bilərsiniz:

 if (object !== "undefined") {} 

Qlobal dəyişənlər üçün pəncərə

Pəncərə obyektini yoxlayaraq qlobal obyekti (qlobal miqyasda müəyyənləşdirilmiş) yoxlaya bilərsiniz:

 if (window.FormData) {} 
5
31 окт. cavab 31 octimal üstünlük verilir . 2013-10-31 16:18 '13 'da 16:18' da 2013-10-31 16:18

Siz "typeof" istifadə edə bilərsiniz.

 if(typeof maybeObject != "undefined") alert("GOT HERE"); 
4
15 нояб. cavab RussellUresti 15 noyabrda verilir . 2010-11-15 20:10 '10 at 20:10 2010-11-15 20:10

Mən yalnız if(maybeObject) mənim javascripts bir boş çek kimi istifadə if(maybeObject) .

 if(maybeObject){ alert("GOT HERE"); } 

Buna görə, yalnız maybeObject bir obyektdirsə, bir xəbərdarlıq göstərilir. Sitemde bir örnek var.

https://sites.google.com/site/javaerrorsandsolutions/home/javascript-dynamic-checkboxes

4
19 нояб. istifadəçi tərəfindən verilmiş cavab 19 noyabr 2010-11-19 14:27 '10 at 14:27 2010-11-19 14:27

Mən yuxarıda yuxarıdakı tiplərin nümunələrini yoxlayıb, heç kim mənim üçün işləməmişdi, əvəzində mən bunu istifadə etdim:

2
28 апр. Facundo Colombier tərəfindən verilmiş cavab 28 Apr. 2015-04-28 21:50 '15 at 21:50 pm 2015-04-28 21:50

Bir obyektin / dəyişənin mövcudluğunun yoxlanılmasına əlavə olaraq, "ən pis vəziyyət" nəticəsini vermək və ya xəbərdarlığa getməməyiniz üçün ən azı onu xəbərdar etmək isteyebilirsiniz.

Nəzarət edən bir funksiyaya nümunə, alternativ və tələlər təmin edir.

 function fillForm(obj) { try { var output; output = (typeof obj !== 'undefined') ? obj : ''; return (output); } catch (err) { // If an error was thrown, sent it as an alert // to help with debugging any problems alert(err.toString()); // If the obj doesn't exist or it empty // I want to fill the form with "" return (''); } // catch End } // fillForm End 

Mən də xm, xm, xm [z] və x tipi xm [z] xm olmadıqda səhv olan ola bilər.

Bu kömək edir. (BTW, JS ilə yeni oldum)

1
05 апр. Cavab verilib 05 aprel. 2015-04-05 20:56 '15 at 8:56 pm 2015-04-05 20:56

Divar alignmnt sekme çubuğunu istifadə edərək, satırdakı çərçivə üçün mətn dəyərini bir çərçivəyə seçin. Buna görə, ilk növbədə, dəyəri təyin etmədən əvvəl seçilmiş sekmeli çərçivələri yoxlamaq və ya aşağıdakı kodları istifadə etməlisiniz:

Javascript kodu:

 ///////////////////////////////////////// <script> function set_TextID() { try { if(!parent.frames["entry"]) { alert("Frame object not found"); } else { var setText=document.getElementById("formx").value; parent.frames["entry"].document.getElementById("form_id").value=setText; } if(!parent.frames["education"]) { alert("Frame object not found"); } else { var setText=document.getElementById("formx").value; parent.frames["education"].document.getElementById("form_id").value=setText; } if(!parent.frames["contact"]) { alert("Frame object not found"); } else { var setText=document.getElementById("formx").value; parent.frames["contact"].document.getElementById("form_id").value=setText; } }catch(exception){} } </script> 
0
13 сент. Cavab Ram 13 sentyabr tərəfindən verilir. 2013-09-13 09:21 '13 saat 09:21 'da 2013-09-13 09:21

mənim üçün çalışdı:

 if(document.getElementsByClassName("classname").length != 0 ){ alert("classname exist"); } 
0
14 авг. Cavab və bri 14 aug tərəfindən verilir . 2017-08-14 18:12 '17 saat 6:12 'da 2017-08-14 18:12' də
 if (n === Object(n)) { // code } 
0
08 сент. Leo Lanese tərəfindən verilmiş cavab 08 sentyabr . 2015-09-08 16:54 '15 at 16:54 2015-09-08 16:54
 if (maybeObject !== undefined) alert("Got here!"); 
-1
29 авг. cavab plunk2000 29 avqust verilir . 2012-08-29 19:43 '12 at 19:43 2012-08-29 19:43

Ən asan düşünün

 if(myobject_or_myvar) alert('it exists'); else alert("what the hell you'll talking about"); 
-4
19 апр. Cavab noobtoo 19 apreldə verilir 2014-04-19 17:32 '14 saat 17:32 'da 2014-04-19 17:32

Yoxsa mənim eksklüziv varolmalarımdan istifadə etməyə başlaya və qeyri-mümkün bir şey edə bilərsiniz. yəni:

Həm də belə şeyləri exists("blabla") mümkündür: exists("blabla") və ya hətta: exists("foreignObject.guessedProperty.guessNext.propertyNeeded") ...

-8
15 февр. 15 fevralda user1170379 tərəfindən verilmiş cavab 2012-02-15 23:42 '12 at 23:42 2012-02-15 23:42