let a = 5
let b = 6
switch (a) {
  case 3:
    console.log('a为3');
    break;
  case 4:
    console.log('a为4');
    break;
  case (5 && b === 6):
    console.log('a为5且b为6');
    break;
  case 5:
    console.log('a为5'); //输出 
    break;
  case (5 && b !== 6):
    console.log('a为5且b不为6');
    break;
}

想象情况:输出a为5且b为6 实际情况:case后边:是将表达式与switch后面的值与其比较得出一个true或false。 先进行了这个表达式的计算 5 && b === 6 //是true,5转为布尔值是true 而 a === true 是false 可以写成 

let a = 5
let b = 6
switch (a) {
  case 3:
    console.log('a为3');
    break;
  case 4:
    console.log('a为4');
    break;
  case 5:
    if (b === 6) {
      console.log('a为5且b为6');
    }
    break;
  case 5:
    console.log('a为5'); //输出 
    break;
}