JavaScript

【JavaScript】switch文が正しく分岐されない時の原因と対処法

本記事では、JavaScriptでswitch文が正しく分岐されない時の原因と対処法について解説しています。

JavaScriptの学習におすすめ参考書
改訂3版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで

本書情報
出版社技術評論社
著者山田 祥寛
発売日2023/2/13
ページ数624ページ
レビュー
(Amazon)
(4件)
先輩くん
先輩くん
10万部突破したJavaScriptの本が大幅増補改訂し7年ぶりに発売されたよ!
後輩ちゃん
後輩ちゃん
最新の基本文法から、開発に欠かせない応用トピックまで学ぶことが出来るよ!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

switch文が正しく分岐されない時の原因

switch文で正しく分岐されない時は、比較している式と値の型が異なっていることが多くの原因だと思われます(記述ミスを除いて)。switch文は式と値を等価演算子(==)で比較しているのではなく、厳密等価演算子(===)で比較をしています。

下記のコードを見てみましょう。

let num = 10;

switch (num) {
  case "10":
    console.log("一致");
    break;
  default:
    console.log("不一致");
    break;
}

パッと見ると「case “10”」に一致して見えますが、これを実行するとコンソールに「不一致」と表示されます。これで、switch文が厳密等価演算子(===)で式と値を評価していることが分かります。

console.log(typeof 10); // => number
console.log(typeof "10"); // => string

switch文が正しく分岐されない時の対処法

つまり、値だけなく型も同じにすればswitch文は正しく分岐されます。先ほど紹介したコードの「case “10”」を「case 10」にして動作確認してみましょう。

let num = 10;

switch (num) {
  case 10:
    console.log("一致");
    break;
  default:
    console.log("不一致");
    break;
}

「同じ値の10」「同じ型のnumber」でswitch文は式と値が一致していると評価し、コンソールに「一致」が表示されました。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村