概要
式を評価し、その式の値が case のラベルと一致するなら、その case に関連付けられた文を実行します。
| 文 | |
| 実装されたバージョン: | JavaScript 1.2, NES 3.0 |
| ECMA バージョン: | ECMA-262, Edition 3 |
構文
switch (expression) {
caselabel1:statements1
[break;]
caselabel2:statements2
[break;]
...
caselabelN:statementsN
[break;]
default:statements_def
[break;]
}
パラメータ
-
expression - 各ラベルと一致するか調べる式。
-
labelN -
expressionと一致するか調べるのに使う識別子。
-
statementsN -
expressionが、関連付けられたラベルと一致するなら実行される文。
-
statements_def -
expressionがいずれのラベルにも一致しなかったのなら実行される文。
説明
もし一致するものが見つかれば、プログラムは関連付けられた文を実行します。もし複数の case が与えられた値に一致するなら、たとえ case がお互いに等しくなくても、一致した最初の case が選択されます。
プログラムは最初に式の値と一致するラベルを持つ case 節を探し、そしてその節に制御を移し、関連付けられた文を実行します。もし一致するラベルが見つからなければ、プログラムは省略可能な default 節を探します。そしてもし見つかれば、その節に制御を移し、関連付けられた文を実行します。もし default 節が見つからなければ、プログラムは switch の終わりに続く文から実行を継続します。規約により、default 節は最後の節ですが、そうである必要はありません。
各ケースのラベルに関連付けられた省略可能な break 文は、一度一致した文が実行されたら、プログラムが switch から抜け出し、switch に続く文から実行を継続することを保証します。もし break が省略されたなら、プログラムは switch 文の中の次の文から実行を継続します。
例
例: switch を使う
次の例では、もし expression が "Bananas" に評価されるなら、プログラムは case "Bananas" で値に一致し、関連付けられた文を実行します。break と遭遇したときは、プログラムは switch から抜け出し、switch に続く文を実行します。もし break が省略されたなら、case "Cherries" に対する文も実行されます。
switch (expr) {
case "Oranges":
document.write("Oranges are $0.59 a pound.<br>");
break;
case "Apples":
document.write("Apples are $0.32 a pound.<br>");
break;
case "Bananas":
document.write("Bananas are $0.48 a pound.<br>");
break;
case "Cherries":
document.write("Cherries are $3.00 a pound.<br>");
break;
case "Mangoes":
case "Papayas":
document.write("Mangoes and papayas are $2.79 a pound.<br>");
break;
default:
document.write("Sorry, we are out of " + expr + ".<br>");
}
document.write("Is there anything else you'd like?<br>");