[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
647(2): (ワッチョイ fa3d-FCAK [133.32.132.49 [上級国民]]) 2023/02/24(金)01:21 ID:jGK2BMhd0(1) AAS
//【環境】Win11,JScript
//【何をしたのか】case文のところに条件式を書き、breakせずにすべての条件式で評価したい
//【サンプルコード】現象を再現可能な最小限のコードを書いてください。
a=1
switch (true) {
case (a==1):
a=a+16
WScript.echo("aの値を変更a=",a)
case (a>10):
WScript.echo("a>10","a=",a)
省17
648: (ワッチョイ 9ebd-kyjD [119.240.41.213]) 2023/02/24(金)02:46 ID:thXJapXb0(1/2) AAS
>>647
上から順に case が評価され、どこかで真になればそれ以降の case は評価されない。
break してないからそれ以降の処理がフォールスルーで実行されてるだけ。
全部の条件を評価したいなら普通に if で書けばいいと思うよ。
650(1): (ワッチョイ 9ebd-kyjD [119.240.41.213]) 2023/02/24(金)08:59 ID:thXJapXb0(2/2) AAS
>>649
case に式を書けるようにしたことによって使えるようになった副作用みたいなものだよね。
switch の式と一致する case を探すのが switch文の動作だとするなら、switch の式 true と一致する値となる、すなわち true になる式を持つ case が選択される。
個人的には if で書けばいいものをわざわざ分かりづらい書き方にしてるバッドプラクティスだと思ってるが、フォールスルーと組み合わせると if よりもスマートに書ける可能性はあるかもね。
特に >>647 のように全部の case を評価してほしいなら、switch で書く利点が何一つ無い。
if より利点がある場合は、フォールスルーする場合に最初に true になる case までしか式が評価されないことくらいなのに。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s