Kaip nustatyti, ar kintamasis yra „neapibrėžtas“, ar „null“?

Kaip nustatyti, ar kintamasis yra undefined ar null ? Mano kodas atrodo taip:

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

Bet jei tai darau, „JavaScript“ vertėjas nutraukia vykdymą.

1745 m
15 апр. nustatoma sadmicrowave 15 Bal 2010-04-15 21:12 '10, 21:12, 2010-04-15 21:12
@ 27 atsakymai

Galite naudoti abstrakčios lygybės operatoriaus savybes:

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

Kadangi null == undefined teisinga, aukščiau nurodytas kodas bus užfiksuotas ir null ir undefined .

2393
15 апр. atsakymas pateikiamas Sarfrazui 15 d. 2010-04-15 21:14 '10, 21:14, 2010-04-15 21:14

Standartinis būdas apeiti null ir undefined tuo pačiu metu:

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

- kuris yra 100% ekvivalentiškas aiškesniam, bet mažiau glaustam:

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

Rašant profesionalų JS, savaime suprantama, kad === kad tipo lygybė ir elgesys == vs === suprantami. Todėl naudojame == ir palyginkite tik iki null .

border=0

Dar kartą pakeiskite

Pastabos, kuriose nurodoma, kad naudojamos rūšys, yra tiesiog klaidingos. Taip, mano pirmiau pateiktas sprendimas vadinsis „ReferenceError“, jei kintamojo nėra. Tai geras dalykas. Ši nuoroda yra pageidautina: ji padeda jums rasti klaidų ir jas ištaisyti prieš siunčiant kodą, kaip ir kompiliatoriaus klaidos kitomis kalbomis.

Jūsų kode neturėtų būti nuorodų į nedeklaruotus kintamuosius.

981
22 янв. atsakymas pateikiamas laikinai_ naudotojo_ vardas 22 sausis 2014-01-22 06:01 '14, 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 апр. atsakymą pateikė user216441 15 balandžio. 2010-04-15 21:25 '10, 21:25, 2010-04-15 21:25

Atrodo, kad pirmiau pateiktų atsakymų derinimas yra pats išsamesnis atsakymas:

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

Tai turėtų veikti bet kuriam kintamajam, kuris nėra deklaruotas arba deklaruotas ir aiškiai nustatytas nuliui arba neapibrėžtam. Būlio išraiška turi būti vertinama kaip klaidinga bet kuriam deklaruotam kintamajam, turinčiam faktinę nulinę vertę.

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

bus vertinama kaip teisinga, jei vertė nenurodyta:

  • nulis

  • nėra apibrėžta

  • NaN

  • tuščia eilutė ("")

  • 0

  • klaidinga

81
07 мая '15 в 10:24 2015-05-07 10:24 Atsakymas skiriamas Tamaraiselvamui gegužės 07 d. 15 d. 10:24 val. 2015-05-07 10:24
Funkcija

jQuery attr() grąžina tuščią eilutę arba faktinę vertę (ir niekada null arba undefined ). Vienintelis laikas, kai jis grąžina undefined yra tada, kai jūsų selektorius nepateikė jokio elemento.

Taigi galite išbandyti tuščią eilutę. Arba, kadangi tuščios eilutės, nulinės ir neapibrėžtos, yra klaidingos, galite tiesiog tai padaryti:

 if (!EmpName) { //do something } 
22
15 апр. atsakymas pateikiamas Chetan Sastry 15 d. 2010-04-15 21:20 '10, 21:20, 2010-04-15 21:20

Man patinka naudoti:

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

Jis sugauna ir nulį, ir neapibrėžtą.

11
16 сент. atsakymas pateikiamas abyrne85 rugsėjo 16 d 2016-09-16 11:35 '16 at 11:35 am 2016-09-16 11:35

Jei kintamasis, kurį norite patikrinti, yra pasaulinis, atlikite

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

Šis tikrinimo metodas nesukels klaidos, net jei kintamojo yourVarName nėra.

Pavyzdys: noriu sužinoti, ar mano naršyklė palaiko istorijos API.

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

Kaip tai veikia:

window yra objektas, kuriame yra visi pasauliniai kintamieji kaip jo savybės, o „JavaScript“ teisėta bandyti pasiekti neegzistuojantį objektą. Jei history nėra, window.history grįžta undefined . undefined false, todėl kodas ( if(undefined){} bloke nebus rodomas.

9
10 февр. Atsakyti DenisS 10 Vas 2014-02-10 19:30 '14, 19:30, 2014-02-10 19:30

Aš atėjau parašyti savo funkciją. „Javascript“ keista

Galite naudoti bet ką. (Atkreipkite dėmesį, kad tai taip pat patikrina, ar kintamajame yra bet kokių naudojamų verčių. Tačiau kadangi ši informacija taip pat paprastai reikalinga, manau, kad tai verta paskelbti). Prašome apsvarstyti galimybę palikti pastabą.

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

Suderinama su spausdinimo įranga.


Redaguoti. ši funkcija turėtų daryti tą patį, kaip ir empty() php“ empty() funkcija (žr. RETURN VALUES )

undefined , null , false , 0 , 0.0 , "0" {} , [] kaip tuščia.

"0.0" , „ NaN , " " , true , laikomi tuščiais.

7
24 окт. Blauhirn atsakė spalio 24 d. 2015-10-24 18:14 '15, 18:14, 2015-10-24 18:14

Kadangi naudojate jQuery , galite nustatyti, ar kintamasis yra neapibrėžtas, ar jo vertė yra nulinė, naudojant vieną funkciją.

 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 atsakymą pateikė Angelin Nadar liepos 8 d. 14 val. 11:00 2014-07-08 11:00

Turėjau šią problemą, t. Y. Patikrinkite, ar objektas yra nulis.
Aš tiesiog naudoju tai:

 if (object) { Somecode} 

tai yra.

 if (document.getElementById("enterJob")) document.getElementById("enterJob").className += ' current'; 
4
15 окт. Atsakymą Welshboy pateikia spalio 15 d. 2013-10-15 19:44 '13, 7:44 pm 2013-10-15 19:44

JQuery čekio elementas nėra nulinis

 var dvElement = $('#dvElement'); if (dvElement.length > 0) { //do something } else{ //else do something else } 
3
04 марта '15 в 20:10 2015-03-04 20:10 atsakymą pateikė Kapil kovo 14 d. 15 d. 20:10 2015-03-04 20:10

Su toliau pateiktu sprendimu:

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

Galiu patikrinti:

  • nulis
  • nėra apibrėžta
  • NaN
  • tuščias
  • eilutė ("")
  • 0
  • klaidinga
2
12 дек. Atsakymą pateikė Tony Tai Nguyen 12 d. 2017-12-12 13:29 '17 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 дек. Atsakymas duotas KARTHIKEYAN.A 04 Dec. 2016-12-04 03:10 '16 at 3:10 2016-12-04 03:10

Geriausias būdas:

 if(typeof variable==='undefined' || variable===null) {  } 
1
25 мая '16 в 14:55 2016-05-25 14:55 atsakymą pateikė Nishanth Matha gegužės 25 d. 16, 14:55 2016-05-25 14:55

Šį bandymą atlieku chromo konsolėje, naudodami (void 0), galite patikrinti neapibrėžtą

 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 atsakymas pateikiamas nuo gegužės 18 d., 16 val. 23:10 2016-05-18 23:10
 (null == undefined) // true (null === undefined) // false 

Kadangi === tikrina ir tipą, ir vertę. Abiejų tipų rūšys yra skirtingos, bet reikšmė yra tokia pati.

0
27 мая '18 в 14:19 2018-05-27 14:19 atsakymą pateikė Franklinas Piousas gegužės 27 d. 18 val. 14:19 2018-05-27 14:19

Galite patikrinti, ar ši vertė yra neapibrėžta, ar tiesiog, jei naudojate tipą:

 if(typeof value == 'undefined'){ 
0
26 июля '17 в 5:16 2017-07-26 05:16 atsakymas pateikiamas gideon liepos 26 d. 17, 17:16 2017-07-26 05:16

Kvietimas į „null“ tipą grąžina reikšmę „objektas“, nes specialioji vertė null yra laikoma tuščia nuoroda į objektą. „Safari“ per 5-ą versiją ir „Chrome“ per 7-ą versiją turi klaidą, kai skambutis į tipinę išraišką grąžina „funkciją“, o visos kitos naršyklės grąžina „objektą“.

-1
06 марта '14 в 14:24 2014-03-06 14:24 Atsakymą pateikė Jones Agyemang kovo 14 d. 14:24 2014-03-06 14:24

Kai kuriais atvejais galite pakeisti undefined reikšmę. Nors jie paprastai yra reti, kartais geriau vengti faktiškai undefined verčių.

Kaip rezultatas, ir todėl, kad tai greičiau rašyti, esu įpratęs naudoti undefined etiketę, kuri turėtų pažvelgti į pirmąją tuščios matricos vertę. Ši vertė yra garantuota kaip undefined primityvioji vertė ir ją galima pasiekti naudojant [][0] .

Šis patikrinimas padės ieškoti ir undefined ir null .

Štai pavyzdys:

if(x==null) yra bloga idėja javascript'e, teisėjas su "==" gali sukelti nenumatytą tipo prievartą, o kavos scenarijus negali būti skaitomas, niekada nenaudokite "==" arba "! =" pagal teismo sprendimą!

if(x) būtų geriau. bet 0 ir "" tai bus laikoma klaidinga , o ne lygus metodas su "!= null" yra teisingas .

2019

05 авг. atsakymas pateikiamas Albert.Qing 05 rug . 2017-08-05 08:06 '17, 08:06 2017-08-05 08:06