Использование оператора OR в инструкции switch javascript

Я делаю оператор switch в javascript:

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 или CRP, я всегда получаю первый, который является CRP. Пожалуйста, помогите, спасибо!

Ответ 1

Вы должны переписать его следующим образом:

case 'CRP':
case 'COO':
case 'FOU':
  $('#jurd_tp_id').val(data);
  break;

Вы можете увидеть его в документе switch. Здесь описывается поведение последовательных операторов case без break между ними (называемое "провалом" ):

Дополнительный оператор break, связанный с каждым ярлыком case, гарантирует, что программа выйдет из коммутатора после выполнения согласованного оператора и продолжит выполнение в инструкции следующего коммутатора. Если разрыв пропущен, программа продолжает выполнение в следующем выражении в инструкции switch.

Что касается того, почему ваша версия работает только для первого элемента (CRP), это просто потому, что выражение 'CRP'||'COO'||'FOU' оценивается как 'CRP' (поскольку непустые строки оцениваются в true в булевом контексте). Так что оператор case эквивалентен только case 'CRP': после его вычисления.