Javascript - 将if语句转换为switch语句

时间:2012-03-04 15:07:22

标签: javascript

我正在尝试使用javascript将if语句转换为switch语句。这是有效的if语句:

      if(!error1(num, a_id) && !error2(num, b_id) && !error3(num, c_id) && !error4(num, d_id)) {
    a.innerHTML = num;

有关如何将其置于switch语句中的任何提示都会很棒。感谢

1 个答案:

答案 0 :(得分:1)

可以将其设为switch,但目前还不清楚为什么要这样做。乍一看,这不是那种使用switch的情况(在一组值中选择并为每个值做出不同的事情)。

这是怎么回事,虽然我不推荐它:

switch (false) {
    case !error1(num, a_id):
    case !error2(num, b_id):
    case !error3(num, c_id):
    case !error4(num, d_id):
        // Do nothing
        break;
    default:
        a.innerHTML = num;
        break;
}

这适用于JavaScript,但大多数其他语言switch都没有。它起作用的原因是当执行点到达时case标签被评估,它们是guaranteed to be evaluated in source code order。所以你要切换值false,它将首先针对===的返回值进行测试(使用严格相等,!error1(num, a_id)),然后如果不匹配,反对!error2(num, a_id)等;如果它们都不匹配,则它们都评估true,并且default块中的代码运行。