私はJavaScriptでswitchステートメントをやっています:
switch($tp_type){
case 'ITP':
$('#indv_tp_id').val(data);
break;
case 'CRP'||'COO'||'FOU':
$('#jurd_tp_id').val(data);
break;
}
OR演算子を使用すると機能しないと思います。JavaScriptでこれを正しく行うにはどうしたらいいですか?ITPを選択した場合、ITPを取得します。ただし、COO、FOU =のいずれかを選択した場合、 OR CRP私は常に最初のCRPを取得します。助けてください、ありがとう!
次のように書き直す必要があります。
case 'CRP':
case 'COO':
case 'FOU':
$('#jurd_tp_id').val(data);
break;
switch
リファレンスに記載されていることがわかります。間にcase
sがない連続するbreak
ステートメントの動作(「フォールスルー」と呼ばれます)がそこに記述されています。
各ケースラベルに関連付けられたオプションのbreakステートメントは、一致したステートメントが実行されるとプログラムがスイッチから抜け出し、switchに続くステートメントで実行を継続することを保証します。 breakを省略した場合、プログラムはswitchステートメントの次のステートメントから実行を継続します。
バージョンが最初のアイテム(CRP
)に対してのみ機能する理由については、式'CRP'||'COO'||'FOU'
が'CRP'
に評価されるためです(ブールコンテキストでは空でない文字列はtrue
に評価されるため)。つまり、case
ステートメントは、一度評価されたcase 'CRP':
と同等です。