Vraag Hoe te bepalen of variabele 'undefined' of 'null' is?


Hoe bepaal ik of variabele is undefined of null? Mijn code is als volgt:

var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
  //DO SOMETHING
};
<div id="esd-names">
  <div id="name"></div>
</div>

Maar als ik dit doe, stopt de JavaScript-interpreter de uitvoering.


1598
2018-04-15 18:12


oorsprong


antwoorden:


Je kunt de kwaliteiten van de gebruiken abstracte gelijkheidsoperator om dit te doen:

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

Omdat null == undefined is waar, de bovenstaande code zal beide vangen null en undefined.


2194
2018-04-15 18:14



De standaard manier om te vangen null en undefined tegelijkertijd is dit:

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

- wat 100% equivalent is aan het meer expliciete maar minder beknopte:

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

Bij het schrijven van professionele JS wordt het als vanzelfsprekend beschouwd dat [type gelijkheid en het gedrag van == vs ===] [1] is begrepen. Daarom gebruiken we == en alleen vergelijken met null.


Nogmaals bewerken

De opmerkingen die het gebruik van suggereren typeof zijn eenvoudig fout. Ja, mijn oplossing hierboven veroorzaakt een ReferenceError als de variabele niet bestaat. Dit is iets goeds. Deze ReferenceError is wenselijk: het zal je helpen om je fouten te vinden en ze te repareren voordat je je code verzendt, net als compilerfouten in andere talen.

U zou geen verwijzingen naar niet-verklaarde variabelen in uw code moeten hebben.


908
2018-01-22 03:01



if (variable == null) {
    // Do stuff, will only match null or undefined, this won't match false
}

176
2018-04-15 18:25



Het combineren van de bovenstaande antwoorden lijkt het meest complete antwoord te zijn:

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

Dit zou moeten werken voor elke variabele die niet is opgegeven of gedeclareerd en expliciet is ingesteld op null of undefined. De boolean-expressie moet false evalueren voor een gedeclareerde variabele die een werkelijke niet-nulwaarde heeft.


161
2017-10-11 17:02



if (typeof EmpName != 'undefined' && EmpName) {

zal waar evalueren als waarde niet:

  • nul

  • onbepaald

  • NaN

  • lege tekenreeks ("")

  • 0

  • vals


74
2018-05-07 07:24



jQuery attr() functie retourneert een lege tekenreeks of de werkelijke waarde (en nooit null of undefined). De enige keer dat het terugkeert undefined is wanneer je selector geen enkel element heeft teruggestuurd.

Dus misschien wilt u testen tegen een lege string. Als alternatief, aangezien lege strings, null en undefined false-y zijn, kunt u dit gewoon doen:

if (!EmpName) { //do something }

20
2018-04-15 18:20



Ik gebruik dit graag:

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

Het vangt beide nul en onbepaald


12
2017-09-16 08:35



Als de variabele die u wilt controleren een globale is, wel

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

Deze manier om te controleren zal geen fout veroorzaken, zelfs als het yourVarName variabele bestaat niet.

Voorbeeld: ik wil weten of mijn browser History API ondersteunt

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

Hoe dit werkt:

window is een object dat alle globale variabelen als eigenschappen bevat en in JavaScript is het toegestaan ​​om toegang te krijgen tot een niet-bestaande objecteigenschap. Als history bestaat dan niet window.history komt terug undefined. undefined is falsey, dus codeer in een if(undefined){} blok zal niet lopen.


9
2018-02-10 16:30