声明变量时切换中的执行流程

时间:2017-06-25 09:43:44

标签: javascript

我按照以下方式运行此功能:

funcA(1); // error

但为什么会失败?我知道这个代码在a == 2的情况下失败了,但是这段代码虽然没有到达(*)行但却抛出了错误。我的意思是当a为1且其他情况未被调用时,为什么会抛出错误?

function funcA(a) {
    switch(a){
        case 1:
            return a+1;
            break;
        case 2: 
            let b = 2;
        default:
            let b = 3; (*)
            return;
    }
}      
console.log(funcA(1));

它不应该出错,因为代码永远不会到达行(*)来重新声明b变量。

1 个答案:

答案 0 :(得分:1)

案件匹配后你需要休息:

function funcA(a) {
    switch(a){
        case 1:
            return a+1;
            break;
        case 2: 
            let b = 2;
            break; // insert break here
        default:
            let b = 3; (*)
            return;
    }
}