JS从零开始(6)

185 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

case穿透(续)

对于switch语句,其中的break是可以省略的,但是省略之后很可能会出现case穿透效果,对于我们新手来说,不建议省略break语句。

举个栗子:✨

var num = 3;
switch (num) {
    case 1:
        console.log('1');
        break;
    case 2:
        console.log('2');
        break;
    case 3:
        console.log('3');
    case 4:
        console.log('4');
    case 5:
        console.log('5');
    case 6:
        console.log('6');
        break;
    case 7:
        console.log('7');
        break;
    default:
        console.log('0');
        break;
}

结果如下:

image.png

所以为什么会出现这种case穿透效果呢?因为我声明的变量为3,当程序运行到case 3的时候,由于其后面没有break语句,所以会导致程序一直运行到case 6才会停止,这通常和我们所说的switch选择语句不太相符,所以才会被称为case穿透效果。

用switch语句替换if语句

在开发中,多次使用if语句会造成电脑资源浪费,可读性很差,我们应该避免这种书写代码的方式,那我们怎么使用switch语句来替换if语句呢?请往下看👇

我们先写个if语句的小程序(尽量避免这种写法,太糙了🙏)

var num = 10086;
//不只是10086,可能有很多,这只是举例
if (num == 1) {
    alert('111');
} 
else if (num == 2) {
    alert('222');
} 
else if (num == 3) {
    alert('333');
} 
else if (num == 4) {
    alert('444');
} 
else if (num == 5) {
    alert('555');
} 
else if (num == 6) {
    alert('666');
} 
else if (num == 7) {
    alert('777');
} 
else if (num == 8) {
    alert('你还要我怎样');
} 
else {
    alert('我到底要怎么做你们才能放过我');
}

这种代码一看就知道是新的不能再新的新手,要是拿出去肯定会被别人笑话,而且质量差,可读性差,占用公共资源,下面是用switch语句来替换if语句的代码,请往下看👀

var num = 10086; 
switch (num) {
    case 1:
        alert('111');
        break;
    case 2:
        alert('222');
        break;
    case 3:
        alert('333');
        break;
    case 4:
        alert('444');
        break;
    case 5:
        alert('555');
        break;
    case 6:
        alert('666');
        break;
    case 7:
        alert('777');
        break;
    case 8:
        alert('你还要我怎样');
        break;
    default:
        alert('我到底要怎么做你们才能放过我');
        break;
}

怎么样?看起来是不是比上面那个更加舒服,这种代码可读性好,效率也更高,最重要的是它不会像if语句那样一个if语句一个if语句挨个去执行,switch语句只需要匹配到相应的值便可执行,效率是不是比if更高吧? 在开发中,这种代码也是比if更受欢迎,使用更广泛的形式,所以要牢记噢!