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.
Eh bien, vous pouvez toujours "abandonner" :)
function b(val){
return (val==null || val===false);
}
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.
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.
Je pense que ce que vous recherchez, c'est!!val==false
qui 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 ""
}
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 ... }
seul raccourci pour quelque chose comme ça que je connaisse est
var val;
(val==null || val===false) ? false: true;
Essayez comme ci-dessous
var Boolify = require('node-boolify').Boolify;
if (!Boolify(val)) {
//your instruction
}
Référez-vous node-boolify
Boolean (val) === false. Cela a fonctionné pour moi pour vérifier si la valeur était faussement.
En utilisant ? est beaucoup plus propre.
var ? function_if_exists() : function_if_doesnt_exist();