web-dev-qa-db-fra.com

Vérification JavaScript si la valeur est seulement indéfinie, nulle ou fausse

Outre la création d'une fonction, existe-t-il un moyen plus rapide de vérifier si une valeur est undefined, null ou false uniquement en JavaScript?

L'instruction ci-dessous si est équivalente à if(val===null && val===undefined val===false) Le code fonctionne bien, je recherche un équivalent plus court.

if(val==null || val===false){
  ;
}

Au-dessus de val==null, la valeur est true lorsque val=undefined ou val=null.

Je pensais peut-être utiliser des opérateurs au niveau des bits, ou une autre supercherie.

36
William A

Eh bien, vous pouvez toujours "abandonner" :)

function b(val){
    return (val==null || val===false);
}
30
hugomg

La meilleure façon de le faire est la suivante: 

if(val != true){
//do something
} 

Ce sera vrai si val est faux, NaN ou non défini. 

12
David Hoffman

Une façon de le faire est comme ça:

var acceptable = {"undefined": 1, "boolean": 1, "object": 1};

if(!val && acceptable[typeof val]){
  // ...
}

Je pense que cela minimise le nombre d'opérations compte tenu de vos restrictions rendant le contrôle rapide.

2
Eugene Lazutkin

Je pense que ce que vous recherchez, c'est!!val==falsequi peut être transformé en!val(encore plus court):

Tu vois:

function checkValue(value) {
    console.log(!!value);
}

checkValue(); // false
checkValue(null); // false
checkValue(undefined); // false
checkValue(false); // false
checkValue(""); // false

checkValue(true); // true
checkValue({}); // true
checkValue("any string"); // true

Cela fonctionne en retournant la valeur en utilisant l'opérateur !.

Si vous retournez null une fois, par exemple, comme ceci: 

console.log(!null) // that would output --> true

Si vous le retournez deux fois comme ça:

console.log(!!null) // that would output --> false

Idem avec undefined ou false.

Votre code:

if(val==null || val===false){
  ;
}

deviendrait alors:

if(!val) {
  ;
}

Cela fonctionnerait dans tous les cas, même s'il y avait une chaîne mais que sa longueur était égale à zéro . Maintenant, si vous voulez que cela fonctionne également pour le nombre 0 (qui deviendrait false s'il était retourné deux fois), votre si deviendrait:

if(!val && val !== 0) {
  // code runs only when val == null, undefined, false, or empty string ""
}
2
SudoPlz

Une autre solution:

Sur la base du document, l'objet booléen renverra true si la valeur n'est pas 0, non défini, null, etc. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean

Si value est omis ou vaut 0, -0, null, false, NaN, indéfini ou la chaîne vide (""), la valeur initiale de l'objet est false. 

Alors

if (Boolean (val)) 
 {
 // exécutable ...
}
1
Yiding

seul raccourci pour quelque chose comme ça que je connaisse est 

var val;
(val==null || val===false) ? false: true;
1
Joseph Marikle

Essayez comme ci-dessous

var Boolify = require('node-boolify').Boolify;
if (!Boolify(val)) {
    //your instruction
}

Référez-vous node-boolify

0
Ratan Uday Kumar

Boolean (val) === false. Cela a fonctionné pour moi pour vérifier si la valeur était faussement. 

0
Brigette

En utilisant ? est beaucoup plus propre.

var ? function_if_exists() : function_if_doesnt_exist();
0
Pedro Pereira