2

Javascript で and (&&) と or (||) を組み合わせる方法を考えています。

a と b の両方が 1 に等しいか、c と d の両方が 1 に等しいかを確認したい。

私はこれを試しました:

    if (a == 1 && b == 1 || c == 1 && d == 1)
    {
        //Do something
    }

しかし、うまくいきません。

誰か知っていますか?

4

4 に答える 4

3

演算子の優先順位は、括弧の間に式を配置することでオーバーライドできます。

 if ((+a == 1 && +b == 1) || (+c == 1 && +d == 1)) // Use brackets to group them
 {
   // your code
 }

などのケースを防いでくれますif(0&&0 || 1&&1)

于 2013-06-10T11:27:01.007 に答える
2

さて、他の全員 (David を除く) に彼らの答えが間違っている理由を説明し終えたので、彼らにも同じように私を悩ませる機会を与えましょう。

示されている既存のコードは、説明しているように見えることを既に実行しているはずです。しかし、あなたが言うとき、それは可能ですか:

「a と b の両方が 1 に等しいか、c と d の両方が 1 に等しいかを確認したい。」

...「どちらか」という言葉の使用は、次の条件の1 つだけが真であるかどうかを確認することを意味します。

  • a と b は両方とも 1 ですが、c と d は両方とも 1 ではありません
  • c と d は両方とも 1 ですが、a と b は両方とも 1 ではありません

つまり、変数の 1 つのペアを 1 にしたいが、4 つの変数すべてを同時に 1 にしたくないということですか?

もしそうなら、それは排他的 OR演算であり、JS では^operatorです:

if ((a == 1 && b == 1) ^ (c == 1 && d == 1)) {

論理 OR 演算子とは異なり、優先順位が高いため、式の AND 部分を||括弧で囲む必要があることに注意してください。(実際にはビット単位の演算子ですが、使用するオペランドはすべてブール値であるため、ここでは機能します。)&&^^

于 2013-06-10T13:11:22.673 に答える
1

the and n or 条件を区別するためにいくつかの余分な括弧を配置します

if ((a == 1 && b == 1) || (c == 1 && d == 1))
于 2013-06-10T11:31:42.680 に答える