Можно ли использовать !(не) в инструкции JS switch?

#javascript #switch-statement #logical-operators

Вопрос:

На самом деле, я работал с оператором JS switch. Я использовал (!) в операторе switch, но он не работает. вот мой код

 function showResult(){
  let firstNum = document.getElementById("num1").value;
  firstNum = Number(firstNum);
  let secNum = document.getElementById("num2").value;
  secNum = Number(secNum);
  let operator = document.getElementById("operator").value;
  let getErrorElem = document.getElementById("error");
  let getResElem = document.getElementById("res");
  let resu<
  // alert(typeof(operator));

  switch(operator){
      case null:
      case "":
          getErrorElem.innerHTML = "Operatot field can't be empty";
          break;
  }

  switch(!(operator)){
      case " ":
      case "-":
      case "/":
      case "*":
          alert("You can only input ( , -, *, /) these signs in operator field");
          break;
  }
}
 

Я получил от пользователя три значения: первое число, второе число и оператор в поле оператор, мне нужны только ( ,-,*,/) эти значения, кроме этих значений, есть сообщение об ошибке. Я использовал оператор switch для проверки этого поля, но он не работает. Если я использую оператор (if), он работает правильно. Пожалуйста, объясните, как я могу проверить это поле с помощью оператора switch с помощью ! оператор.

Комментарии:

1. Что вы ожидаете, что произойдет с !" " , !"-" , !"/" или !"*" ? o.O

2. Это не так, как работает переключатель — он проверяет, равен ли !(operator) (что всегда ложно, за исключением случаев, когда оператор является пустой строкой) одному из » «, «-«, «/», или «*»

3. if (![" ", "-", "*", "/"].includes(operator)) { ... }

4. Вам не нужны две инструкции switch, вы можете обрабатывать все случаи в одном коммутаторе. Я думаю, вам следует почитать больше о том, как работает переключатель.

5. Просто добавьте регистр по умолчанию в инструкцию switch

Ответ №1:

Похоже, вам нужно что-то вроде этого:

 function showResult(){
  let firstNum = document.getElementById("num1").value;
  firstNum = Number(firstNum);
  let secNum = document.getElementById("num2").value;
  secNum = Number(secNum);
  let operator = document.getElementById("operator").value;
  let getErrorElem = document.getElementById("error");
  let getResElem = document.getElementById("res");
  let resu<
  // alert(typeof(operator));

  switch(operator){
      case null:
      case "":
          getErrorElem.innerHTML = "Operatot field can't be empty";
          break;

      case " ":
      case "-":
      case "/":
      case "*":
          // Handle the right input.
          break;

      default:
          alert("You can only input ( , -, *, /) these signs in operator field");
          break;
  }
}