Операторы переключения и модуль - PullRequest
0 голосов
/ 19 июня 2020

Привет, я немного сбит с толку, почему я ничего не регистрирую в этой функции. Если я пропущу 10 через функцию, не должно ли регистрироваться case2? Я думаю, это как-то связано с тем, как я написал строку по модулю ...

 function helloWorld(num) {
        switch (num){
                case num % 3 === 0:
                    console.log('case1');
                    break

                case num % 5 === 0:
                     console.log('case2');
                     break

                case num % 3 === 0 && num % 5 ===0:
                     console.log('case3');
                     break
            }
        }

 helloWorld(10);

1 Ответ

1 голос
/ 19 июня 2020

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

Вы добавляете логическое условие внутри каждого case, вызывая неожиданное поведение. То, что вы сделали, формально правильно, но семантически неверно.

Это правильный код:

 function helloWorld(num) {
   if((num % 3) === 0)
     console.log('case1');

   else if((num % 5) === 0)
     console.log('case2');

   else if((num % 3) === 0 && (num % 5) === 0)
     console.log('case3');
 }

helloWorld(10);

Для получения дополнительной информации об операторе switch:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch

...