Question Comment déterminer si la variable est 'indéfinie' ou 'nulle'?


Comment puis-je déterminer si la variable est undefined ou null? Mon code est le suivant:

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

Mais si je fais cela, l'interpréteur JavaScript arrête l'exécution.


1598
2018-04-15 18:12


origine


Réponses:


Vous pouvez utiliser les qualités de la opérateur d'égalité abstraite pour faire ça:

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

Car null == undefined est vrai, le code ci-dessus va attraper les deux null et undefined.


2194
2018-04-15 18:14



La façon standard d'attraper null et undefined est simultanément ceci:

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

--qui est 100% équivalent au plus explicite mais moins concis:

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

Lors de l'écriture professionnelle JS, il est tenu pour acquis que [l'égalité de type et le comportement de == contre ===] [1] est compris. Par conséquent, nous utilisons == et seulement comparer à null.


Modifier à nouveau

Les commentaires suggérant l'utilisation de typeof sont simplement faux. Oui, ma solution ci-dessus provoquera une erreur ReferenceError si la variable n'existe pas. C'est une bonne chose. Cette ReferenceError est souhaitable: elle vous aidera à trouver vos erreurs et à les corriger avant d'expédier votre code, tout comme les erreurs du compilateur le feraient dans d'autres langues.

Vous ne devriez pas avoir de références à des variables non déclarées dans votre code.


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



En combinant les réponses ci-dessus, il semble que la réponse la plus complète serait:

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

Cela devrait fonctionner pour toute variable non déclarée ou déclarée et explicitement définie sur null ou indéfinie. L'expression booléenne doit être évaluée à false pour toute variable déclarée ayant une valeur réelle non nulle.


161
2017-10-11 17:02



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

évaluera à vrai si la valeur n'est pas:

  • nul

  • indéfini

  • NaN

  • chaîne vide ("")

  • 0

  • faux


74
2018-05-07 07:24



jQuery attr() La fonction renvoie une chaîne vide ou la valeur réelle (et jamais null ou undefined). La seule fois où il revient undefined est lorsque votre sélecteur n'a renvoyé aucun élément.

Donc, vous voudrez peut-être tester contre une chaîne vide. Alternativement, puisque les chaînes vides, null et indéfini sont faux-y, vous pouvez simplement faire ceci:

if (!EmpName) { //do something }

20
2018-04-15 18:20



J'aime utiliser ceci:

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

Il attrape les deux nul et indéfini


12
2017-09-16 08:35



Si la variable que vous voulez vérifier est globale, faites

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

Cette façon de vérifier ne jettera pas une erreur même si le yourVarName la variable n'existe pas.

Exemple: Je veux savoir si mon navigateur supporte l'API History

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

Comment cela fonctionne:

window est un objet qui contient toutes les variables globales comme propriétés, et en JavaScript, il est légal d'essayer d'accéder à une propriété d'objet non existante. Si history n'existe pas alors window.history résultats undefined. undefined est Falsey, donc le code dans un if(undefined){} le bloc ne fonctionnera pas.


9
2018-02-10 16:30



Je suis venu pour écrire ma propre fonction pour cela ... javascript est bizarre

Utilisable sur n'importe quoi littéralement. (Notez que cela vérifie également si la variable contient des données utilisables valeurs. Mais puisque cette information est habituellement aussi nécessaire, je pense que ça vaut le coup de poster). S'il vous plaît envisager de laisser une note.

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

Compatible avec le typage.

modifier. cette fonction devrait faire exactement la même chose que les PHPs empty()fonction (voir RETURN VALUES)

Considère undefined, null, false, 0, 0.0, "0"  {}, [] comme vide.

"0.0", NaN, " ", true sont considérés comme non vides.


7
2017-10-24 15:14