2010-03-11 6 views
2

en Java ou d'autres langues similaires, je ne peux pas faire:évaluation de l'expression des valeurs booléennes

a <b> c 

a, b, c sont les types booléens.

En Javascript, je peux le faire et aussi avec d'autres types de données valeurs:

var t = 3; 
var z = true; 

t > z // will be true 

Maintenant, pourquoi les résultats est vrai ???

Répondre

2

True sera converti en 1. Et 3 est supérieur à un ...

4

Parce que Javascript est prêt à faire des conversions de type à la baisse d'un chapeau. Boolean true est sous la contrainte à 1 numérique.

Notez que 1 == true est true, mais 1 === true est false.

+0

+1. En outre, 'une < b > C' sera évaluée comme '(a < b) > C' et depuis' a C' teste si le nombre entier résultant coulé (1 ou 0) est supérieure à c. –

+0

En effet, pour moi, toutes ces explications constituent des raisons d'effacer du code comme ça quand on le rencontre :-) – Pointy

0

JavaScript lance d'abord le true booléen à un certain nombre pour la comparaison. Dans ce cas true est jeté à 1.

De nombreux objets ne seront pas jetés aux chiffres bien. Par exemple, {} est NaN.

Questions connexes