制御構文 (2/6)
作成:2010-03-31 20:29
更新:2010-05-11 16:58
更新:2010-05-11 16:58
■値に応じてジャンプする「switch」
ifは、二者択一でしたが、それ以上に細かな分岐が必要となったときに使われるのが「switch」です。これは、条件として指定した値をチェックし、その値に対応する場所にジャンプする働きを持ちます。(下のリスト部分の基本形を参照)
switchは、その後の()内にある変数や式などの値をチェックし、その値のcase文にジャンプし、そこにある処理を実行します。caseは、「case 値:」というように書かれており、この値が一致するところにジャンプするわけです。
ただし! 注意したいのは、「そこから抜ける機能はない」という点です。つまり、ジャンプして対応するcaseに移動しますが、そこにある処理を実行し終わっても、自動的に構文を抜けたりはしないのです。そこで、それぞれのcaseの後に用意するスクリプトでは、最後に「break」というものを用意するのが一般的です。このbreakは、現在の構文から抜け出る働きをします。
もし、対応するcaseがなかった場合には、「default:」というラベルにジャンプします。これはオプションなので、なくても構いません。もしなかった場合には、対応するcaseがないとそのまま構文を抜けて次へ進みます。
簡単な利用例を下のリストにあげておきましょう。これは、変数Aに、今何時かを示す0~23の数字を入れると、その値に応じて挨拶のメッセージが表示される、というものです。「var A = 13;」の部分の値を適当に変更して動作を確かめてみてください。
ここでは、Aを6で割った値を使ってcaseにジャンプしています。といっても、割り算をする/演算子は、小数点以下まで細かく割ってしまいますので、整数部分の値だけを取り出せません。そこで、「Aを6で割った余りをAから引いてから6で割る」というように計算をしています。あらかじめあまりの数字を引いてから割り算すれば、必ず整数の値が得られますからね。
switchは、その後の()内にある変数や式などの値をチェックし、その値のcase文にジャンプし、そこにある処理を実行します。caseは、「case 値:」というように書かれており、この値が一致するところにジャンプするわけです。
ただし! 注意したいのは、「そこから抜ける機能はない」という点です。つまり、ジャンプして対応するcaseに移動しますが、そこにある処理を実行し終わっても、自動的に構文を抜けたりはしないのです。そこで、それぞれのcaseの後に用意するスクリプトでは、最後に「break」というものを用意するのが一般的です。このbreakは、現在の構文から抜け出る働きをします。
もし、対応するcaseがなかった場合には、「default:」というラベルにジャンプします。これはオプションなので、なくても構いません。もしなかった場合には、対応するcaseがないとそのまま構文を抜けて次へ進みます。
○利用例○
簡単な利用例を下のリストにあげておきましょう。これは、変数Aに、今何時かを示す0~23の数字を入れると、その値に応じて挨拶のメッセージが表示される、というものです。「var A = 13;」の部分の値を適当に変更して動作を確かめてみてください。
ここでは、Aを6で割った値を使ってcaseにジャンプしています。といっても、割り算をする/演算子は、小数点以下まで細かく割ってしまいますので、整数部分の値だけを取り出せません。そこで、「Aを6で割った余りをAから引いてから6で割る」というように計算をしています。あらかじめあまりの数字を引いてから割り算すれば、必ず整数の値が得られますからね。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※switchの基本形
switch ( 値 ){
case 値1:
……実行する処理……
break;
case 値2:
……実行する処理……
break;
……必要に応じてcaseを用意……
default:
……どれにも対応しない場合の処理……
}
※サンプルプログラム
<html>
<head>
<script type="text/javascript">
<!--
var A = 13;
var n = (A - (A % 6)) / 6;
switch(n){
case 0:
alert('おやすみなさい……。夜中です。');
break;
case 1:
alert('おはよう。朝です。');
break;
case 2:
alert('こんにちは。昼です。');
break;
case 3:
alert('こんばんは。夜です。');
break;
default:
alert('ん? なんか変な時間ですよ?');
}
//-->
</script>
</head>
<body>
<H1>TEST.</H1>
</body>
</html>
※関連コンテンツ
「初心者のためのJavaScriptプログラミング入門」に戻る