没有break的switch执行到了哪?

235 阅读1分钟



switch的基本用法

function useSwitch(str) {  
    switch (str) {    
        case 'a':      
            console.log('this is a');      
            break;    
        case 'b':      
            console.log('this is b');      
            break;    
        case 'c':      
            console.log('this is c');      
            break;    
        default:      
            console.log('this is default');      
            break;  
}}

若存在对应case, 执行对应case中的代码块

useSwitch('a') 
// this is a

不存在对应case, 不执行, 或执行default中的代码块

useSwitch('e') 
// this is default

当break不存在

// 去除breakfunction 
useSwitch(str) {  
    switch (str) {    
        case 'a':      
            console.log('this is a');    
        case 'b':      
            console.log('this is b');    
        case 'c':      
            console.log('this is c');    
        default:      
            console.log('this is default');  
}}

若想执行b中的代码块,  虽然执行了b中的代码块,  但b后面的case内的代码块同样会执行, 执行剩余的case直到执行完毕遇到break

useSwitch('b')
// this is b
// this is c
// this is default

// 去除break
function useSwitch(str) {  
    switch (str) {    
        case 'a':      
            console.log('this is a');    
        case 'b':      
            console.log('this is b');    
        case 'c':      
            console.log('this is c');    
        case 'd':      
            console.log('this is d');      
            break;    
        default:      
            console.log('this is default');  
}}

useSwitch('b')
// this is b
// this is c
// this is d

不同的case执行同一套代码

// 去除break
function useSwitch(str) {  
    switch (str) {    
        case 'a':      
            console.log('this is a');
            break;
        case 'b':       
        case 'c':      
            console.log('this is b or c');
            break;    
        case 'd':      
            console.log('this is d');      
            break;    
        default:      
            console.log('this is default');  
}}

useSwitch('b')
// this is b or c
useSwitch('c')
// this is b or c