web-dev-qa-db-fra.com

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

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

1931
sadmicrowave

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

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

Étant donné que null == undefined est vrai, le code ci-dessus intercepte les variables null et undefined.

2625
Sarfraz

Le moyen standard pour attraper null et undefined simultanément est la suivante:

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

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

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

En écrivant JS professionnel, il est pris pour acquis que l’égalité de type et le comportement de == vs === est compris. Par conséquent, nous utilisons == et comparons uniquement à null.


Modifiez à nouveau

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

Vous ne devriez avoir aucune référence à des variables non déclarées dans votre code.

1047
temporary_user_name

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 non défini. L'expression booléenne doit être évaluée à false pour toute variable déclarée ayant une valeur réelle non nulle.

203
jkindwall
if (variable == null) {
    // Do stuff, will only match null or undefined, this won't match false
}
183
user216441
if (typeof EmpName != 'undefined' && EmpName) {

sera évalué à true si la valeur n'est pas:

  • null

  • non défini

  • NaN

  • chaîne vide ("")

  • false

88
Thamaraiselvam

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

Donc, vous voudrez peut-être tester sur une chaîne vide. Alternativement, puisque les chaînes vides, null et undefined sont false-y, vous pouvez simplement faire ceci:

if (!EmpName) { //do something }
23
Chetan Sastry

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

Utilisable sur littéralement n'importe quoi. (Notez que ceci vérifie également si la variable contient des valeurs utilisables . Mais puisque cette information est généralement nécessaire, je pense que cela vaut la peine d'être publié). 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;
}

TypeScript-compatible.


Modifier. cette fonction devrait faire exactement la même chose que PHP fonction empty() (voir RETURN VALUES)

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

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

16
Blauhirn

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

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

Cette méthode de vérification ne génère pas d'erreur, même si la variable yourVarName n'existe pas.

Exemple: je veux savoir si mon navigateur prend en charge l'historique API

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

Comment ça marche:

window est un objet qui contient toutes les variables globales en tant que propriétés. 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 renvoie undefined. undefined est falsey, le code d'un bloc if(undefined){} ne fonctionnera donc pas.

10
DenisS

Puisque vous utilisez jQuery, vous pouvez déterminer si une variable est indéfinie ou si sa valeur est null en utilisant une seule fonction.

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;
7
Angelin Nadar

Je viens d'avoir ce problème, c'est-à-dire vérifier si un objet est null.
J'utilise simplement ceci:

if (object) {
    // Your code
}

Par exemple:

if (document.getElementById("enterJob")) {
    document.getElementById("enterJob").className += ' current';
}
7
Welshboy

l'élément de contrôle jQuery n'est pas null

var dvElement = $('#dvElement');

if (dvElement.length  > 0) {
    //do something
}
else{
    //else do something else
}
4
Kapil

Avec la solution ci-dessous:

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

Je suis en mesure de vérifier les éléments suivants:

  • nul
  • undefined
  • NaN
  • vide
  • chaîne ("")
  • false
2
Tony Tai Nguyen

je lance ce test sur la console chrome, en utilisant (void 0), vous pouvez vérifier non défini

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
suhail
(null == undefined)  // true

(null === undefined) // false

Parce que === vérifie à la fois le type et la valeur. Le type des deux est différent mais la valeur est la même.

1
Franklin Pious

Le plus court et le plus facile:

if(!EmpName ){
 // DO SOMETHING
}

cela évaluera true si EmpName est:

  • nul
  • undefined
  • NaN
  • vide
  • chaîne ("")
  • false
1
userPlus

Le moyen le plus simple de vérifier est:

if(!variable) {
  // If the variable is null or undefined then execution of code will enter here.
}
1
M. Arnold
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
KARTHIKEYAN.A

Vous pouvez simplement utiliser ce qui suit (je sais qu'il existe des méthodes plus courtes pour le faire, mais cela peut faciliter l'observation visuelle, du moins pour ceux qui consultent le code).

if (x === null || x === undefined) {
 // add your response code here etc.

}

0
agc

Meilleur moyen:

if(typeof variable==='undefined' || variable===null) {

/* do your stuff */
}
0
Nishanth Matha

Vous pouvez vérifier si la valeur est indéfinie ou nulle en utilisant simplement typeof:

if(typeof value == 'undefined'){
0
gideon