Javascript で and (&&) と or (||) を組み合わせる方法を考えています。
a と b の両方が 1 に等しいか、c と d の両方が 1 に等しいかを確認したい。
私はこれを試しました:
if (a == 1 && b == 1 || c == 1 && d == 1)
{
//Do something
}
しかし、うまくいきません。
誰か知っていますか?
Javascript で and (&&) と or (||) を組み合わせる方法を考えています。
a と b の両方が 1 に等しいか、c と d の両方が 1 に等しいかを確認したい。
私はこれを試しました:
if (a == 1 && b == 1 || c == 1 && d == 1)
{
//Do something
}
しかし、うまくいきません。
誰か知っていますか?
演算子の優先順位は、括弧の間に式を配置することでオーバーライドできます。
if ((+a == 1 && +b == 1) || (+c == 1 && +d == 1)) // Use brackets to group them
{
// your code
}
などのケースを防いでくれますif(0&&0 || 1&&1)
。
さて、他の全員 (David を除く) に彼らの答えが間違っている理由を説明し終えたので、彼らにも同じように私を悩ませる機会を与えましょう。
示されている既存のコードは、説明しているように見えることを既に実行しているはずです。しかし、あなたが言うとき、それは可能ですか:
「a と b の両方が 1 に等しいか、c と d の両方が 1 に等しいかを確認したい。」
...「どちらか」という言葉の使用は、次の条件の1 つだけが真であるかどうかを確認することを意味します。
つまり、変数の 1 つのペアを 1 にしたいが、4 つの変数すべてを同時に 1 にしたくないということですか?
もしそうなら、それは排他的 OR演算であり、JS では^
operatorです:
if ((a == 1 && b == 1) ^ (c == 1 && d == 1)) {
論理 OR 演算子とは異なり、優先順位が高いため、式の AND 部分を||
括弧で囲む必要があることに注意してください。(実際にはビット単位の演算子ですが、使用するオペランドはすべてブール値であるため、ここでは機能します。)&&
^
^
the and n or 条件を区別するためにいくつかの余分な括弧を配置します
if ((a == 1 && b == 1) || (c == 1 && d == 1))