如何在Javascript switch-case语句中执行`finally`?

时间:2014-05-28 03:01:18

标签: javascript switch-statement

在javascript switch语句中,如果case中的任何一个满意,我想执行一些函数:

switch (myVar){
  case 0:
    do_something_0();
    break;
  case 1:
    do_something_1();
    break;
  // I want to execute myFunc() if myVar === 1 or myVar === 2
}

我提出了这样的辅助变量haveMatched的想法。

var haveMatched=false;
switch (myVar){
  case 0:
    do_something_0();
    haveMatched=true;
    break;
  case 1:
    do_something_1();
    haveMatched=true;
    break;
}
if (haveMatched){
  do_finally();
}

我认为可能有更好的方法来实现这一点(例如,如果我不了解default:关键字,我会尝试类似的方式)。我做得对,还是我错过了什么?

4 个答案:

答案 0 :(得分:13)

如果您重写代码以包含默认案例,则不必在每种情况下都包含haveMatched = true

var haveMatched=true;
switch (myVar){
  case 0:
    do_something_0();
    break;
  case 1:
    do_something_1();
    break;
  default:
    haveMatched = false;
}
if (haveMatched){
  do_finally();
}

答案 1 :(得分:1)

为什么不把函数放在案例中:

switch (myVar){
  case 0:
    do_something_0();
    do_finally();
    break;
  case 1:
    do_something_1();
    do_finally();
    break;
}

答案 2 :(得分:1)

在每个案例块中包含该函数,您不需要标志......

switch (myVar){
  case 0:
    do_something_0();
    do_finally();
    break;
  case 1:
    do_something_1();
    do_finally();
    break;
}

答案 3 :(得分:0)

这是一种解决方法:

  try {
    switch (option) {
        case 0:
            console.log("option 0");
            break;
        case 1:
            console.log("option 1");
            break;
        default:

    }
} catch (err) {
    throw err;
} finally {
    doActionFinally();
}