En muchos idiomas, la segunda manera se evalúa de izquierda para corregir incorrectamente con respecto a lo que quiere.
En C, por ejemplo, 1990 < year
se evaluará a 0 o 1, que luego se convierte en 1 < 2099
, lo que siempre es cierto, por supuesto.
Javascript es un muy similar a C: 1990 < year
rendimientos true
o false
, y esas expresiones booleanas parecen comparar numéricamente igual a 0 y 1 respectivamente.
Pero en C#, que ni siquiera compilar, que le da el error:
error CS0019: Operator '<' cannot be applied to operands of type 'bool' and 'int'
Usted recibe un error similar a Ruby, mientras Haskell le dice que no se puede utilizar <
dos veces en la misma expresión infija .
De la parte superior de mi cabeza, Python es el único lenguaje que estoy seguro que maneja el "entre" la configuración de esa manera:
>>> year = 5
>>> 1990 < year < 2099
False
>>> year = 2000
>>> 1990 < year < 2099
True
La conclusión es que la primera forma (x < y && y < z)
es siempre la más segura apuesta.
bien, me había querido decir en javascript, lo siento. Supongo que las dos declaraciones con && es la única manera? – Inigo
Correcto, eso lo aclaro! gracias – Inigo