web-dev-qa-db-fra.com

Le moyen le plus propre de convertir en booléen

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.

72
Aracthor

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
116
Robo Robok