开关语句和模数

Switch Statements and Modulo

您好,我对为什么在此函数中没有记录任何内容感到有点困惑。如果我通过函数传递 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);

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