(0 <= 0 <= 0) === false
(-1 < 0 <= 0 <= 0) === true
何が起きてる?Javascript には、場合によっては間違った不等式連鎖が実際にありますか?
(0 <= 0 <= 0) === false
(-1 < 0 <= 0 <= 0) === true
何が起きてる?Javascript には、場合によっては間違った不等式連鎖が実際にありますか?
質問を入力すると、答えに驚かされました。Javascript には不等式連鎖はありません。むしろ、0 <= 0 <= 0
となりtrue <= 0
、 として評価され1 <= 0
ます。確かに、 に0 < 0 <= 0
評価されtrue
ます。
演算子の連鎖はありませんが、優先順位があります。ここでは、すべての演算子の優先度が同じであるため、操作は左から右に実行されます。
比較にブール値が含まれる場合、MDN は比較がどのように機能するかを説明します。
オペランドの 1 つがブール値の場合、ブール値オペランドは、真の場合は 1 に変換され、偽の場合は +0 に変換されます。
これは、最初の操作が優先順位に従って次のように分解されることを意味します。
((0 <= 0) <= 0)
これは
true <= false
これは
false
そして2つ目は
(true <= 0) <= 0
これは
false <= 0
ですtrue
。