Kako odrediti je li varijabla "nedefinirana" ili "null"?

Kako odrediti je li varijabla undefined ili null ? Moj kôd izgleda ovako:

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

Ali ako to učinim, JavaScript tumač zaustavlja izvršenje.

1745
15 апр. postavljeno na sadmicrowave 15 Apr 2010-04-15 21:12 '10 u 21:12 2010-04-15 21:12
@ 27 odgovora

Možete koristiti kvalitete operatora apstraktne jednakosti :

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

Budući da je null == undefined istina, gornji kod će zabilježiti i null i undefined .

2393
15 апр. odgovor je dat Sarfraz 15 apr. 2010-04-15 21:14 '10 u 21:14 2010-04-15 21:14

Standardni način zaobilaženja null i undefined u isto vrijeme:

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

- što je 100% ekvivalentno eksplicitnijem, ali manje konciznom:

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

Prilikom pisanja profesionalnog JS-a, podrazumijeva se da === podrazumijevaju jednakost i ponašanje tipova == vs === . Stoga, koristimo == i uspoređujemo samo s null .

border=0

Ponovo promijenite

Komentari koji upućuju na uporabu vrste su jednostavno pogrešni. Da, gore navedeno rješenje će nazvati ReferenceError ako varijabla ne postoji. Ovo je dobra stvar. Ova ReferenceError je poželjna: pomaže vam u pronalaženju pogrešaka i ispravljanju prije slanja koda, baš kao i kod kompilacijskih pogrešaka na drugim jezicima.

Ne biste trebali imati reference na neprijavljene varijable u svom kodu.

981
22 янв. odgovor je dati privremeno_ime_upravitelja 22. siječnja 2014-01-22 06:01 '14 u 6: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 апр. odgovor daje korisnik216441 15 travanj. 2010-04-15 21:25 '10 u 21:25 2010-04-15 21:25

Kombiniranje gore navedenih odgovora čini se najkompletnijim odgovorom:

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

To bi trebalo raditi za bilo koju varijablu koja nije deklarirana ili deklarirana i eksplicitno postavljena na null ili undefined. Boolean izraz mora biti procijenjen kao lažan za svaku deklariranu varijablu koja ima stvarnu vrijednost od nule.

176
11 окт. odgovor dao jkindwall 11 listopada. 2013-10-11 20:02 '13 u 20:02 2013-10-11 20:02
 if (typeof EmpName != 'undefined'  EmpName) { 

će biti ocijenjeno kao istinito ako vrijednost nije navedena:

  • nula

  • nije definirano

  • NaN

  • prazan niz ("")

  • 0

  • lažan

81
07 мая '15 в 10:24 2015-05-07 10:24 Odgovor je dat Thamaraiselvam 07. svibnja u 10:24 sati. 2015-05-07 10:24
funkcija

jQuery attr() vraća ili prazan niz ili stvarnu vrijednost (i nikad null ili undefined ). Jedini put kad se vrati undefined je kada vaš selektor nije vratio nijedan element.

Tako možete testirati prazan niz. Alternativno, budući da su prazni nizovi, null i undefined lažni-y, jednostavno možete to učiniti:

 if (!EmpName) { //do something } 
22
15 апр. dan je odgovor Chetan Sastry 15 apr. 2010-04-15 21:20 '10 u 21:20 2010-04-15 21:20

Volim to koristiti:

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

Ona hvata i null i undefined.

11
16 сент. odgovor je dan abyrne85 16. rujna 2016-09-16 11:35 '16 u 11:35 sati 2016-09-16 11:35

Ako je varijabla koju želite provjeriti globalna, učinite

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

Ova metoda provjere neće uzrokovati pogrešku, čak i ako varijabla yourVarName ne postoji.

Primjer: Želim znati je li moj preglednik podržava API-je povijesti.

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

Kako radi:

window je objekt koji sadrži sve globalne varijable kao njegova svojstva, au JavaScriptu je legalno pokušati dobiti pristup nepostojećem objektu. Ako history ne postoji, window.history vraća undefined . undefined false, pa se kod u if(undefined){} bloku neće pokrenuti.

9
10 февр. Odgovori DenisS 10. veljače 2014-02-10 19:30 '14 u 19:30 2014-02-10 19:30

Došao sam napisati svoju funkciju za ovo. Javascript čudno

Možete koristiti doslovno bilo što. (Imajte na umu da ovo također provjerava da li varijabla sadrži vrijednosti koje se koriste. Ali budući da su ove informacije obično potrebne, mislim da je vrijedno objavljivanja). Razmislite o ostavljanju napomene.

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

Tipkanje-popustljiv.


Uredi. ova funkcija bi trebala učiniti istu stvar kao i funkcija php empty() (pogledajte RETURN VALUES )

Broji undefined , null , false , 0 , 0.0 , "0" {} , [] kao prazno.

"0.0" , NaN , " " , true se smatraju ne-praznima.

7
24 окт. Blauhirn je odgovorio 24. listopada . 2015-10-24 18:14 '15 u 18:14 2015-10-24 18:14

Budući da koristite jQuery , možete odrediti je li varijabla nedefinirana ili je njena vrijednost null koristeći jednu funkciju.

 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 odgovor je dao Angelin Nadar 8. srpnja 2014. u 11:00 2014-07-08 11:00

Imao sam ovaj problem, tj. Provjerio je li objekt nula.
Samo koristim ovo:

 if (object) { Somecode} 

to jest.

 if (document.getElementById("enterJob")) document.getElementById("enterJob").className += ' current'; 
4
15 окт. Odgovor je dao velšbiji 15. listopada. 2013-10-15 19:44 '13 u 19:44 2013-10-15 19:44

JQuery stavka za provjeru nije nula

 var dvElement = $('#dvElement'); if (dvElement.length > 0) { //do something } else{ //else do something else } 
3
04 марта '15 в 20:10 2015-03-04 20:10 odgovor je dao Kapil 04. ožujka 2005. u 20:10 2015-03-04 20:10

S donjim rješenjem:

 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... 

Mogu provjeriti sljedeće:

  • nula
  • nije definirano
  • NaN
  • nula
  • niz ("")
  • 0
  • lažan
2
12 дек. Odgovor daje Tony Tai Nguyen 12. prosinca. 2017-12-12 13:29 '17 u 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 дек. Odgovor je dan KARTHIKEYAN.A 04. prosinca. 2016-12-04 03:10 '16 u 3:10 2016-12-04 03:10

Najbolji način:

 if(typeof variable==='undefined' || variable===null) {  } 
1
25 мая '16 в 14:55 2016-05-25 14:55 odgovor je dao Nishanth Matha 25. svibnja 2011. u 14:55 2016-05-25 14:55

Testiram na chrome konzoli, koristeći (void 0), možete provjeriti nedefinirano

 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 odgovor je dat suhail 18. svibnja '16 u 23:10 2016-05-18 23:10
 (null == undefined) // true (null === undefined) // false 

Zato što === provjerava i vrstu i vrijednost. Obje vrste su različite, ali značenje je isto.

0
27 мая '18 в 14:19 2018-05-27 14:19 odgovor je dao Franklin Pious 27. svibnja u 14:19 sati. 2018-05-27 14:19

Možete provjeriti je li vrijednost nedefinirana ili null jednostavno pomoću typeof:

 if(typeof value == 'undefined'){ 
0
26 июля '17 в 5:16 2017-07-26 05:16 odgovor je dao gideon 26. srpnja 2006. u 5:16 2017-07-26 05:16

Poziv typeof null vraća vrijednost "object", budući da se posebna vrijednost null smatra praznom referencom na objekt. Safari kroz verziju 5 i Chrome kroz verziju 7 ima zabludu, gdje poziv typeof u regularnom izrazu vraća "funkciju", a svi ostali preglednici vraćaju "objekt".

-1
06 марта '14 в 14:24 2014-03-06 14:24 Odgovor daje Jones Agyemang 6. ožujka 2014. u 14:24 2014-03-06 14:24

U nekim slučajevima možete promijeniti vrijednost undefined . Iako su obično rijetki, ponekad je bolje izbjeći korištenje undefined vrijednosti.

Kao rezultat toga, i zato što je brže pisati, navikla sam koristiti naljepnicu za undefined koja bi trebala gledati prvu vrijednost praznog polja. Ova vrijednost je zajamčena kao undefined primitivna vrijednost i može joj se pristupiti pomoću [][0] .

Ova će provjera funkcionirati za pretraživanje i undefined i null .

Evo primjera:

Vidim izvorni post korišten jQuery. Tako sam dodao ono što sam koristio u prošlosti kroz jQuery. Normalno, kada obavljam takvu provjeru, ne nužno provjeravam da je vrijednost null ili undefined samo za tu svrhu. Više poput "Vrijednost postoji, tako da mogu izvesti akcije na njemu." Stoga za ovo koristim sljedeće. Nisam pokušao sve vrste, ali znam da to radi i za null i undefined. Osim toga, objekti i nizovi (prazna verzija tih objekata vraća istinu). Osim toga, naravno, ako varijabla ne postoji, dobit ćete iznimku, ali ja je iskreno pokušavam izbjeći po svaku cijenu. Stoga se slažem s Aerovistom. Želim to znati u svom kodu i ne želim ga jednostavno preskočiti.

 if ($.trim(value) != '') { //Do Something } 
-1
29 авг. odgovor s Eddie 29. kol. 2018-08-29 22:22 '18 u 22:22 sati 2018-08-29 22:22

Možete ga provjeriti na način-

 if(['object','undefined'].indexOf(typeof(variable)) != -1){ console.log("variable is null or undefined."); } 
-1
21 сент. odgovor daje Vivek Kumar 21 sep. 2018-09-21 13:24 '18 u 1:24 pm 2018-09-21 13:24

Ovo je vrlo staro pitanje, ali i dalje mislim da je najbolji / siguran način testiranja tih 2 uvjeta da se vrijednost proslijedi nizu:

 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 odgovor je dan n1kkou 31. svibnja '17 u 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.") }; 

Možete koristiti samo drugi: jer će provjeriti i definiciju i deklaraciju

-1
15 авг. odgovor keshav 15 aug. 2015-08-15 10:18 '15 u 10:18 2015-08-15 10:18

Moj doprinos za 5 centi za određeni slučaj:

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

Svojstvo nije definirano nijednim elementom!

-2
19 июля '15 в 19:23 2015-07-19 19:23 odgovor je dao Cezar 19. srpnja '15. u 19:23 sati 2015-07-19 19:23

Da bih provjerio je li varijabla nula ili nedefinirana, koristim kod u nastavku.

  if(sVal === '' || sVal === null ||typeof sVal === 'undefined'){ console.log('variable is undefined or null'); } 
-3
03 марта '16 в 7:57 2016-03-03 07:57 odgovor je dan DanKodi 03. ožujka u 7:57 2016-03-03 07:57

if(x==null) loša ideja u javascriptu, sudac s "==" može uzrokovati nepredviđenu prisilu tipa i skriptu kave ne možete pročitati, nikada ne koristite "==" ili "! =" pod uvjetom prosudbe!

if(x) bi bilo bolje. ali 0 i "" ovo će se smatrati lažnim , a nije jednaka metoda s "!= null" istinita .

2019

05 авг. odgovor je dao Albert.Qing 05 aug. 2017-08-05 08:06 '17 u 8:06 2017-08-05 08:06