2016-09-30 2 views
0

Il est un modèle populaire pour attribuer une valeur par défaut:Est-ce que Chrome Javascript évalue correctement les expressions booléennes?

var aBool = '' || false; 
var aString = false || ''; 

Ce qui précède donne aBool booléenne la valeur de false et aString la valeur d'une chaîne vide, au moins dans la console de Chrome et FF. Cela est contraire à:

Renvoie expr1 s'il peut être converti en vrai; sinon, renvoie expr2. Ainsi, lorsqu'il est utilisé avec des valeurs booléennes, || renvoie true si l'opérande peut être convertie en true; Si les deux peuvent être convertis en faux, renvoie la valeur false. source: mozilla

C'est en fait à portée de main, mais est-il exact?

+1

Non, ce n'est pas et n'a aucun sens. N'hésitez pas à modifier cette page (la partie "Ainsi ..." doit être supprimée). – georg

+0

"Renvoie' expr1' s'il peut être converti en 'true', sinon, retourne' expr2' "est la partie importante de la phrase –

+2

Qu'est-ce qui ne va pas, me semble-t-il correct? * Si elle est utilisée avec des booléens *, elle renvoie true si l'un des opérandes est vrai, ou false si les deux sont faux. – adeneo

Répondre

0

De cette même page Web, il est dit:

Exemples d'expressions qui peuvent être converties en faux sont:

  • null;
  • NaN;
  • 0;
  • chaîne vide ("");
  • non défini.

Dans votre premier exemple, vous avez une chaîne vide, il convertit à false lorsqu'il est converti en une valeur booléenne. Étant donné que expr1 ne peut pas être converti en true, l'expression renvoie expr2, qui correspond à false.

Dans votre deuxième exemple, expr1 est false, il retourne expr2, qui est ''. La conversion en Boolean est juste utilisée pour déterminer quelle expression doit être renvoyée, elle ne renvoie pas la valeur convertie.

+0

Merci, je sais ce que ça fait, juste confus avec le doc. Il a été réparé maintenant, je me sens soulagé;) – ptrk