LoginSignup
0
0

More than 3 years have passed since last update.

JavaScriptの制御構文(1)〜if命令とswitch命令〜

Posted at

はじめに

こんにちは!
今日から時間をかけて、1度ある程度読んだJavaScriptのテキストの復習をしていこうと計画したので、ついでにこちらに投稿して備忘録として残してみようと思います!
まず、最初のテーマは、制御構文です!

制御構文

制御構文って色々ありますよね!

  • if命令

  • switch命令

  • while/do...while命令

  • for命令
    (for命令の中でも、配列なのかオブジェクトなのかによって使い分けもあります。)

この中で、今回は、if命令とswitch命令について投稿します。
この2つの共通点としては、処理を「分岐する」ことです!

if命令

処理を分岐するための命令には、if命令とswitch命令の2つがあります。

if (条件式) {
    trueの場合の処理
} else {
    falseの場合の処理
}
let x = 75;
if (x >= 60) {
  console.log('合格');
} else {
  console.log('不合格');
}

/* 変数xの値は、60以上であるため、条件式はtrueになるので、consoleには、
「合格」が表示される。*/

上記のような構文を用いて、if命令を実行し、処理の分岐を実現できます。
また、else以降のfalseの場合の処理を省略して、trueの場合のみ、処理を指定することも可能です。

また、trueかfalseの2つに処理を分岐させるのではなく、複数分岐させることもできます。

if (条件式1) {
    条件式1がtrueの場合の処理
} else if (条件式2) {
    条件式2がtrueの場合の処理
} else {
    全ての条件式がfalseの場合の処理
}
let x = 77;
if (x >= 90) {
  console.log('Aです。');
} else if (x >= 75) {
  console.log('Bです。'); 
} else if (x >= 60) {
  console.log('Cです。');
} else {
  console.log('不合格です。');
}

/* 変数xの値は、77であり、75以上、90未満である。したがって、consoleには、
「Bです。」が表示される。*/

else ifを必要な数だけ書き、分岐させます。
しかし、条件式を適切な順番で記述しないと、思わぬところで条件が一致し、処理が終了してしまうので、注意が必要です。

switch命令

if命令は、条件によっては、同じような形式で条件が並ぶので、冗長な(長ったらしい)記述になってしまいます。。

例)

if (rank === 'A') {
    console.log('Aランクです。');
} else if (rank === 'B') {
    console.log('Bランクです。');
} else if (rank === 'C') {
    console.log('Cランクです。');
} else {
    console.log('ランク外です。');
}

上記のような、コードが存在したとすします。条件式をそれぞれ見てみると、rank === ‘A’や、rank === ‘b’というように、「rank ===」という形式の条件が複数連なっています。
しかし、このような、長ったらしい、同じような条件の分岐命令も、switch命令を利用すれば、見やすく改善できます。

switch (式) {
    case 値1:
        式 = 値1の場合の処理
        break;
    case 値2:
        式 = 値2の場合の処理
        break;
    case 値3:
        式 = 値3の場合の処理
        break;
    default:
        式の値が全て一致しなかった場合の処理
        break;
}

このswitch命令には1つ注意点があり、それぞれのcaseの処理の最後には、break命令の記述を忘れないことです。switch命令は、条件式に合致するcaseに移動するだけで、そのcaseの処理を終えたとしても、switch命令自体が終了するわけではないため、そのまま、合致したcase以降のcaseの処理も次々と実行してしまうのです。そうならないために、breakを忘れないように気をつけましょう。

意図的にbreak命令を記述しない時はある。(フォールスルー)

let rank = 'B';

switch (rank) {
    case 'A':
    case 'B': 
    case 'C':
        console.log('合格');
        break;
    case 'D':
        console.log('不合格');
        break;
    default:
        console.log('ランク外');
        break;
}

/* 変数rankの値は、Bであるため、consoleには、
「合格」が表示される。*/

上記では、変数rankの値が、Aの場合、Bの場合、Cの場合では、全て同じ処理をしようとしています。この場合、case ‘A’とcase ‘B’、case ‘C’の間にbreak命令を挟んで、終わらせる必要はありません。
仮にbreak命令を記述してしまうと、そこでswitch命令自体が終了してしまうため、適切な処理が行われなくなってしまいます。(行うべき処理があるにも関わらず、case 'A'やcase 'B'の場合に、何も処理が行われない)
ただし、処理内容の詳細を記述している、case ‘C’やcase ‘D’、defaultの後には、break命令が必要になってきます。

以上!!今日のif命令・switch命令のまとめでした!
理解不足による不備等ございましたら、コメントをお願い致します。

参考文献

山田祥寛著『[改訂新版]JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで』(2018)
※第1刷は、2016年。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0