
Envoyé par
sekaijin
j'ajoute qu'on ne teste pas un booléen on l'utiliser et cela est vrais dans tous les langage supportant les booléen
+1
Seulement le fait qu'il utilise le constructeur Boolean() lui fera tomber toujours dans l'erreur s'il veut utiliser le booléen sans le tester avec le ==. Ceci est due au fait que si on fait a=new Boolean(false) alors a est un objet donc non null. S'il utilise directement a en faisant if(a) ..... alors a produira le même comportement que true et non false et pourtant a est construit avec false. Ceci est vrai
new Boolean(new Boolean(true)).valueOf()===new Boolean(new Boolean(false)).valueOf()===true
. Ainsi, la bonne manière dans ce cas ce n'est pas de tester bien sûr mais de manipuler la valeur if(a.valueOf()) ..... car a.valueOf()===false dans notre cas.
Mais la remarque aussi importante que j'aurais aimé souligner, c'est que dans un cours qui parle des booléens, expressions logiques, et instructions conditionnelles, il fallait qu'il ait mention des expression qui sont équivalent à false et true autre que les littéraux true et false.
Toute valeur/expression en javascript utilisée dans une condition ou dans le constructeur Booean() produira le même comportement que la littéral true sauf les expression qui renvoient les valeurs suivantes:
- 0 ,
1 2 3 4 5
| b=0;
if(b){/*.....*/}//Rien ne se produira
b=new Boolean(0)
b==false //true
b.valueOf()===false //true |
- "", la chaîne de caractère vide
1 2 3 4 5
| b="";
if(b){/*.....*/}//Rien ne se produira
b=new Boolean("")
b==false //true
b.valueOf()===false //true |
- undefined
1 2 3 4 5
| b=undefined;
if(b){/*.....*/}//Rien ne se produira
b=new Boolean(undefined)
b==false //true
b.valueOf()===false //true |
- null
1 2 3 4 5
| b=null;
if(b){/*.....*/}//Rien ne se produira
b=new Boolean(null)
b==false //true
b.valueOf()===false //true |
- NaN
1 2 3 4 5
| b=NaN;
if(b){/*.....*/}//Rien ne se produira
b=new Boolean(NaN)
b==false //true
b.valueOf()===false //true |
Seulement NaN ne se compare pas avec NaN, faire NaN==NaN ou NaN===NaNretournera toujours false, ainsi pour tester une valeur s'il n'est un nombre on utilise la fonction isNaN()
Partager