как работает переключатель javascript, когда он удовлетворяет условию всех случаев - PullRequest
0 голосов
/ 30 апреля 2020
switch (true) {
                case (angle<20):
                    console.log("case1")
                    break;

                case (angle<70):
                    console.log("case2")
                    break;

                case (angle<110):
                    console.log("case3")
                    break;

                case (angle<160):
                    console.log("case4")
                    break;
                ... and so on until 360

}

приведенный выше код работает хорошо. мне просто любопытно, как он может определить, что угол 15 падает на случай 1. в то время как 15, удовлетворяющий всем условиям случая

, не может найти никакой подсказки в Google .. поэтому я спрашиваю здесь еще один топи c был поднят перед. но я действительно не понимаю это все еще некоторая подсказка здесь

Ответы [ 4 ]

0 голосов
/ 30 апреля 2020

корпус переключателя следует сверху вниз. Так что попробуйте обратное условие

switch (true) {
   case (angle>300):
       console.log("case1")
       break;

   case (angle>250):
       console.log("case2")
       break;

   case (angle>200):
       console.log("case3")
       break;

   ... and so on
}
0 голосов
/ 30 апреля 2020

Оператор switch выполняет блок для первого case, которому он соответствует (согласно порядку операторов case перечислены сверху вниз).

Если case содержит break, другие операторы case не сопоставляются, так как выполнение возобновляется после блока switch.

0 голосов
/ 30 апреля 2020

Из-за break; регистр переключения будет прерываться после того, как переменная angle встретит первый случай, который удовлетворяет условию.

0 голосов
/ 30 апреля 2020

Волхвы c используют необязательный оператор break , запомните это:

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

Что произойдет, если вы удалите операторы break в каждом case предложении?

Я думаю, что эта цитата решит ваши сомнения.

...