制御構文 (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プログラミング入門」に戻る