Dans de nombreuses langues, sera évaluée la deuxième façon de gauche à tort à propos de ce que vous voulez.
En C, par exemple, 1990 < year
va évaluer à 0 ou 1, qui devient alors 1 < 2099
, ce qui est toujours vrai, bien sûr.
Javascript est tout à fait similaire à C: 1990 < year
retours true
ou false
, et ces expressions booléennes semblent comparer numériquement égale à 0 et 1 respectivement.
Mais en C#, il ne sera même pas compiler, vous donnant l'erreur:
error CS0019: Operator '<' cannot be applied to operands of type 'bool' and 'int'
Vous obtenez une erreur similaire de Ruby, alors que Haskell vous dit que vous ne pouvez pas utiliser <
deux fois dans la même expression infixe .
Du haut de ma tête, Python est la seule langue que je suis sûr que gère le « entre » la configuration de cette façon:
>>> year = 5
>>> 1990 < year < 2099
False
>>> year = 2000
>>> 1990 < year < 2099
True
L'essentiel est que la première façon (x < y && y < z)
est toujours la plus sûre pari.
OK, je signifie en javascript, désolé. Je suppose que les deux déclarations avec && est le seul moyen? – Inigo
Bon, c'est réglé! merci – Inigo