184 votes

booléen dans une instruction if

Aujourd'hui, on m'a fait une remarque sur le code en considérant la façon dont je vérifie si une variable est vraie ou fausse dans un devoir scolaire.

Le code que j'avais écrit était quelque chose comme ceci :

var booleanValue = true;

function someFunction(){
    if(booleanValue === true){
        return "something";
    }
}

Ils ont dit que c'était mieux/beaucoup mieux de l'écrire comme ça :

var booleanValue = true;

function someFunction(){
    if(booleanValue){
        return "something";
    }
}

La remarque que j'ai reçue au sujet de la partie "=== true" était qu'elle n'était pas nécessaire et pouvait créer une confusion.

Cependant, mon idée est qu'il est préférable de vérifier si la variable est un booléen ou non, d'autant plus que Javascript est un langage loosetypé.

Dans le deuxième exemple, une chaîne de caractères renverrait également "quelque chose" ;

Ma question est donc la suivante : est-il plus propre de perdre la partie "=== true" à l'avenir, ou est-ce une bonne pratique de vérifier également le type de la variable ?

Editar: Dans mon "vrai" code, le booléen représente si une image a été supprimée ou non, donc les seules valeurs que boolValue devrait avoir sont true ou false.

0 et 1 par exemple ne devraient pas être dans cette variable.

4voto

AmitApollo Points 5041

L'identité (===) se comporte de manière identique à l'égalité (==) sauf qu'aucune conversion de type n'est effectuée, et les types doivent être les mêmes pour être considérés comme égaux.

4voto

Barmar Points 135986

Si la variable ne peut prendre que des valeurs booléennes, il est raisonnable d'utiliser la syntaxe la plus courte.

S'il peut potentiellement être affecté à d'autres types, et que vous devez distinguer true de 1 o "foo" alors vous devez utiliser === true .

3voto

Alyafey Points 1435

Puisque la valeur vérifiée est Boolean il est préférable de l'utiliser directement pour moins de codage et en tout cas il a fait pareil ==true

2voto

Sunny Points 2803

Puisque vous avez déjà initialisé clairement comme bool, je pense que === n'est pas nécessaire.

2voto

Jlange Points 2396

En Javascript, la notion de booléen est assez ambiguë. Considérez ceci :

 var bool = 0 
 if(bool){..} //evaluates to false

 if(//uninitialized var) //evaluates to false

Ainsi, lorsque vous utilisez une instruction if (ou toute autre instruction de contrôle), il n'est pas nécessaire d'utiliser une variable de type "booléen". Par conséquent, à mon avis, la partie "=== true" de votre instruction n'est pas nécessaire si vous savez qu'il s'agit d'un booléen, mais absolument nécessaire si votre valeur est une var "truthy" ambiguë. Pour en savoir plus sur les booléens en javscript, consultez le site suivant aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X