1 < 2 < 3はtrueだけど, 3 > 2 > 1はfalse.
トンチですか?
いいえ, JavaScriptです.
優秀な奴はPython.
エラーを吐くのはHaskell.
嘘を付くのがJavaScript.
なんでJavaScriptでこんなことになるのか.
関係を表す演算子は左から評価されます.
3 > 2 > 1 → (3 > 2) > 1 → true > 1
両辺のToNumberが呼ばれます.
Booleanのインスタンスに対してToNumberが呼ばれたときは, true → 1, false → 0になる.
true > 1 → 1 > 1 → false
あ, falseになった.
同様に1 < 2 < 3も考えてみよう.
1 < 2 < 3 → (1 < 2) < 3 → true < 3 → 1 < 3 → true
(∩´∀`)∩ワーイ
同じ様な事は (==) でも作れる.
1 == 1 == 1 はtrueだけど, 2 == 2 == 2はfalse.
理由は考えてみてね.