1

我发现这个例子使范围与 switch 语句一起工作:

function GetText(value)
{
    var result;

    switch (true)
    {
        case ((value >= 26) && (value <= 50)):
            result = ">= 26.";
            break;

        case ((value >= 1) && (value <= 25)):
            result = "Between 1 and 25.";
            break;

        case (value == 0):
            result = "Equals Zero.";
            break;

    }

    return result;
}

但是,如果我修改代码并删除对值的第二次检查,该示例仍然有效:

function GetText(value)
{
    var result;

    switch (true)
    {
        case ((value >= 26)):
            result = ">= 26 .";
            break;

        case ((value >= 1)):
            result = "Between 1 and 25.";
            break;

        case (value == 0):
            result = "Equals Zero.";
            break;

    }

    return result;
}

所以如果我通过了 29,即使我有两个true案例,第一个也会被选中。我的问题是 switch 语句在大多数编程语言中是如何工作的,它将从顶部开始比较,或者仅在这种情况下进行比较(这样写是好还是坏?)。

4

2 回答 2

2

switch语句从上到下检查匹配。

来自关于 switch 语句的 MDN 文档

如果找到匹配项,程序将执行相关的语句。如果多个案例与提供的值匹配,则选择第一个匹配的案例,即使案例彼此不相等。

于 2012-06-03T19:16:49.323 回答
1

我会做这样的事情(用ifelse if链):

function GetText(value) {
    var result;

    if (value == 0) {
        result = "Equals Zero.";
    } else if (value <= 25) {
        result = "Between 1 and 25.";
    } else if (value <= 50) {
        result = "Between 26 and 50.";
    }

    return result;
}
于 2012-06-03T19:37:17.680 回答