J'ai une variable. Appelons cela toto
.
Cette toto
peut être définie sur undefined
, null
, une chaîne ou un objet.
Je voudrais le moyen le plus propre de vérifier si toto
est défini sur une donnée, ce qui signifie défini sur une chaîne ou un objet, et ni undefined
ni null
, et définir la valeur booléenne correspondante dans une autre variable.
J'ai pensé à la syntaxe !!
, qui ressemblerait à ceci:
var tata = !!toto; // tata would be set to true or false, whatever toto is.
Le premier !
serait réglé sur false
si toto était undefined
ou null
et true
sinon, et le second l'inverserait.
Mais ça a l'air un peu effrayant ... Alors, y a-t-il une façon plus propre/plus propre de le faire?
J'ai déjà regardé cette question , mais je veux définir une valeur dans une variable, pas simplement la vérifier dans une instruction if
.
Oui, vous pouvez toujours utiliser ceci:
var tata = Boolean(toto);
Et voici quelques tests:
for (var value of [0, 1, -1, "0", "1", "cat", true, false, undefined, null]) {
console.log(`Boolean(${typeof value} ${value}) is ${Boolean(value)}`);
}
Résultats:
Boolean(number 0) is false
Boolean(number 1) is true
Boolean(number -1) is true
Boolean(string 0) is true
Boolean(string 1) is true
Boolean(string cat) is true
Boolean(boolean true) is true
Boolean(boolean false) is false
Boolean(undefined undefined) is false
Boolean(object null) is false