[過去ログ]
JavaScript の質問用スレッド vol.125 (1002レス)
JavaScript の質問用スレッド vol.125 http://mevius.5ch.net/test/read.cgi/tech/1659855460/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
647: デフォルトの名無しさん (ワッチョイ fa3d-FCAK [133.32.132.49 [上級国民]]) [sage] 2023/02/24(金) 01:21:32.26 ID:jGK2BMhd0 //【環境】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) a=a-10 WScript.echo("aの値を変更a=",a) case (a>30): WScript.echo("a>30です","a=",a) a=0 WScript.echo("aの値を変更a=",a) } WScript.echo("最終的な結果a=",a) //【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用) aの値を変更a= 17 a>10 a= 17 aの値を変更a= 7 a>30です a= 7 aの値を変更a= 0 最終的な結果a= 0 //【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。 2番目のcaseでa=7だから3番目のcaseにはいかず、最終的にはa=7になるのでは? http://mevius.5ch.net/test/read.cgi/tech/1659855460/647
648: デフォルトの名無しさん (ワッチョイ 9ebd-kyjD [119.240.41.213]) [sage] 2023/02/24(金) 02:46:21.28 ID:thXJapXb0 >>647 上から順に case が評価され、どこかで真になればそれ以降の case は評価されない。 break してないからそれ以降の処理がフォールスルーで実行されてるだけ。 全部の条件を評価したいなら普通に if で書けばいいと思うよ。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/648
650: デフォルトの名無しさん (ワッチョイ 9ebd-kyjD [119.240.41.213]) [sage] 2023/02/24(金) 08:59:59.37 ID:thXJapXb0 >>649 case に式を書けるようにしたことによって使えるようになった副作用みたいなものだよね。 switch の式と一致する case を探すのが switch文の動作だとするなら、switch の式 true と一致する値となる、すなわち true になる式を持つ case が選択される。 個人的には if で書けばいいものをわざわざ分かりづらい書き方にしてるバッドプラクティスだと思ってるが、フォールスルーと組み合わせると if よりもスマートに書ける可能性はあるかもね。 特に >>647 のように全部の case を評価してほしいなら、switch で書く利点が何一つ無い。 if より利点がある場合は、フォールスルーする場合に最初に true になる case までしか式が評価されないことくらいなのに。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/650
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s