let a = 1;
switch(a){
    case 1 || 0:
        console.log("aaa");
        break;
    default:
    console.log("else");
}

输出的结果为:aaa
当把a的值改为0的时候,想要的结果是aaa,但是结果却为:else,什么原因呢?

在js中,case后面的语句是一个整体的表达式,不能拆分开,就是说这里的case 1 || 0其实相当于case (1 || 0)。
(1 || 0)的值为1,当a等于1时,两者才相等。

根据switch case规则:

  1. 每一种case结束的时候加break,不加的话,后面条件不管是否成立都会执行;
  2. case的条件相当于 ===;
  3. default等价于else。

想要指定多个条件,应该这样写:

switch(a){
    case 1:
    case 0:
         console.log("aaa");
         break;
    default:
    console.log("else");
}

当a等于1或0时,结果都为:aaa

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐