Во многих языках, второй путь будет оцениваться слева неправильно в отношении того, что вы хотите.
В C, например, 1990 < year
будет оцениваться до 0 или 1, что затем становится 1 < 2099
, что всегда верно, конечно.
Javascript является очень похож на C: 1990 < year
возвращает true
или false
, и эти логические выражения, кажется, численно сравнить равны 0 и 1 соответственно.
Но в C#, он не будет даже компиляции, давая вам ошибку:
error CS0019: Operator '<' cannot be applied to operands of type 'bool' and 'int'
Вы получаете подобную ошибку от Ruby, в то время как Haskell говорит вам, что вы не можете использовать <
дважды в одном выражении инфиксной ,
Off верхней части моей головы, Python является единственным языком, который я уверен, что обрабатывает «между» установки таким образом:
>>> year = 5
>>> 1990 < year < 2099
False
>>> year = 2000
>>> 1990 < year < 2099
True
Суть заключается в том, что первый способ (x < y && y < z)
всегда ваш самый безопасный делать ставку.
ОК, я имел в виду JavaScript, извините. Я думаю, что два оператора с && - единственный способ? – Inigo 2010-12-10 12:15:20
Правильно, это прояснилось! спасибо – Inigo 2010-12-10 12:23:07