switchのフォールスルー問題
JavaScriptのswitchのcaseには、分岐を抜けさせる働きがありません。分岐を抜けるには、breakが必要です。breakを書かない場合、次の分岐も実行されます。この仕様をフォールスルー(fallthrough)と言います。
tslets = "A";switch (s ) {case "A": // breakが無い分岐console .log (1);case "B": // この分岐にも処理が続くconsole .log (2);}
tslets = "A";switch (s ) {case "A": // breakが無い分岐console .log (1);case "B": // この分岐にも処理が続くconsole .log (2);}
フォールスルーはしばしばバグの原因になります。TypeScriptでは、コンパイラオプションnoFallthroughCasesInSwitchをtrueにすると、フォールスルーを警告するようになります。このオプションは有効化しておきましょう。
tslets = "A";switch (s ) {case "A":Fallthrough case in switch.7029Fallthrough case in switch.console .log (1);case "B":console .log (2);}
tslets = "A";switch (s ) {case "A":Fallthrough case in switch.7029Fallthrough case in switch.console .log (1);case "B":console .log (2);}
📄️ noFallthroughCasesInSwitch
switch文のfallthroughを禁止する
学びをシェアする
😴JavaScriptのswitchのcaseには、分岐を抜けさせる働きがない
⏩breakを書かないと次の分岐も実行される(フォールスルー)
🐞フォールスルーはバグになりがち
✅TypeScriptではnoFallthroughCasesInSwitchを有効にするとフォールスルーが検出される
『サバイバルTypeScript』より