次の方法で共有


条件付きステートメント

更新 : 2007 年 11 月

JScript コードの命令は、既定ではシーケンシャルに実行されます。ただし、論理的なシーケンスを変更し、特定の条件に応じてコードの別の場所に制御を移すと便利な場合があります。制御構造は、条件付きステートメントの結果が true と false のどちらであるかに応じて、プログラムの制御を 2 つの場所のどちらかに移します。条件付きステートメントには、ブール型に変換できる式を使用できます。ここでは一般的な条件ステートメントを説明します。

等値演算子と厳密等価演算子

等値演算子 (==) を条件付きステートメントに使用すると、2 つの引数が同じ値かどうかを確認できます。必要な場合は型変換が実行されます。厳密等価演算子 (===) は、2 つの式の値と型の両方を比較し、2 つのオペランドの値とデータ型が同じである場合だけ true を返します。厳密等価演算子は、数値データ型を区別しません。

次の JScript コードでは、等値演算子とそれを使用する if ステートメントを組み合わせています。詳細については、「制御構造」を参照してください。

function is2000(x) : String {
   // Check if the value of x can be converted to 2000.
   if (x == 2000) {
      // Check is the value of x is strictly equal to 2000.
      if(x === 2000)
         print("The argument is number 2000.");
      else
         print("The argument can be converted to 2000.");
   } else {
      print("The argument is not 2000.");
   }
}
// Check several values to see if they are 2000.
print("Check the number 2000.");
is2000(2000);
print("Check the string \"2000\".");
is2000("2000")
print("Check the number 2001.");
is2000(2001);

このコードの出力は次のようになります。

Check the number 2000.
The argument is number 2000.
Check the string "2000".
The argument can be converted to 2000.
Check the number 2001.
The argument is not 2000.

非等値演算子と厳密非等価演算子

非等値演算子 (!=) は、等値演算子の反対の結果を返します。オペランドの値が同じである場合は false を返し、それ以外の場合は true を返します。同様に、厳密非等価演算子 (!==) は厳密等価演算子の反対の結果を返します。

次の JScript コードのサンプルでは、while ループの制御に非等値演算子が使用されています。詳細については、「制御構造」を参照してください。

var counter = 1;
// Loop over the print statement while counter is not equal to 5.
while (counter != 5) { 
   print(counter++);
}

このコードの出力は次のようになります。

1
2
3
4

比較演算子

等値演算子および非等値演算子は、データが特定の値である場合は有用です。ただし、値が特定の範囲内にあるかどうかをチェックすることが必要な場合もあります。このような場合は、関係演算子の、小なり (<)、大なり (>)、以下 (<=)、または以上 (>=) を使用できます。

if(tempInCelsius < 0)
   print("Water is frozen.")
else if(tempInCelsius > 100)
   print("Water is vapor.");
else
   print("Water is liquid.);

ショート サーキット

複数の条件を組み合わせて評価する場合、その中に結果を予測できる条件が含まれるときは、ショート サーキット評価と呼ばれる機能を使用できます。これにより、スクリプトの実行が高速化し、エラーを発生させる可能性のある副作用を避けることができます。JScript で論理式を評価する場合は、結果を得るために必要な最低限の部分式だけが評価されます。

論理 AND 演算子 (&&) は、渡された左側の式を最初に評価します。左側の式が false に変換される場合、右側の式の値にかかわらず、論理 AND 演算子の結果は false になります。したがって、右側の式は評価されません。

たとえば ((x == 123) && (y == 42)) という式の場合、まず x が 123 に等しいかどうかが評価されます。x が 123 でない場合、y は評価されず、false が返されます。

同様に、論理 OR 演算子 (||) は、最初に左側の式を評価します。左側の式が true に変換される場合、右側の式は評価されません。

ショート サーキットを使用すると、評価する条件に関数の呼び出しや複雑な式が含まれている場合などに便利です。スクリプトを最も効率よく実行するために、論理 OR 演算子では左側の式に true になりそうな条件を指定します。論理 AND 演算子の場合は、false になりそうな条件から指定してください。

この方法でスクリプトを作成している次のコード例では、runfirst() 関数の戻り値が false になる場合は、runsecond() 関数が実行されません。

if ((runfirst() == 0) || (runsecond() == 0)) {
   // some code
}

また、次の例のような場合にも便利です。

if ((x == 0) && (y/x == 5)) {
   // some code
}

その他の式

ブール値に変換できる式は、条件ステートメントとして使用できます。たとえば、次のような式を使用した場合を考えます。

if (x = y + z) // This may not do what you expect - see below!

上のコード例は、単一の等号 (代入) が使用されているため、x が y + z に等しいかどうかを調べているのではありません。上記のコードでは、y + z の値を変数 x に代入し、その結果 (x の値) を true 値に変換できるかどうかを調べています。x が y + z に等しいかどうかを調べるには、次のコードを使用します。

if (x == y + z) // This is different from the code above!

参照

概念

Boolean データ

その他の技術情報

JScript の条件構造

JScript のデータ型

JScript リファレンス

演算子 (JScript)