【问题标题】:Write an if..else statement with a switch statement in JavaScript在 JavaScript 中编写带有 switch 语句的 if..else 语句
【发布时间】:2015-12-24 19:25:21
【问题描述】:

如何在 JavaScript 中编写带有 switch 语句的 if..else 语句?

var hour = new Date().getHours();
var msg = "";
if (hour >= 0 && hour < 6) {
    msg = "بامداد شما بخیر !";
} else if (hour >= 6 && hour < 11) {
    msg = "صبح شما بخیر !";
} else if (hour >= 11 && hour < 15) {
    msg = "ظهر شما بخیر !";
} else if (hour >= 15 && hour < 20) {
    msg = "عصر شما بخیر !";
} else if (hour >= 20 && hour < 24) {
    msg = "شب شما بخیر !";
} else {
    msg = "ساعت وارد شده نامعتبر است !";
}
print(hour);
print("------------------------");
print(msg);

【问题讨论】:

标签: javascript switch-statement


【解决方案1】:

由于hour 只有 24 个离散值,您可以在 switch-case 中处理所有这些值:

switch (hour) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
    msg = "بامداد شما بخیر !";
    break;
case 6:
case 7:
case 8:
case 9:
case 10:
    msg = "صبح شما بخیر !";
    break;
case 11:
case 12:
case 13:
case 14:
    msg = "ظهر شما بخیر !";
    break;
case 15:
case 16:
case 17:
case 18:
case 19:
    msg = "عصر شما بخیر !";
    break;
default:
    msg = "شب شما بخیر !";
}

但老实说,并不是白费力气。使用 if-else 更合适。

【讨论】:

    【解决方案2】:

    我会在一开始就说我不会将它重写为switch。但我肯定会改变它。 (不过,我会在下面执行switch。)

    首先,您的"ساعت وارد شده نامعتبر است !" 案永远不会发生。 getHours 返回一个介于 0 和 23 之间的数字,包括 0 和 23。所以不需要处理&lt; 0&gt;= 24的情况。

    我是这样写的:

    var hour = new Date().getHours();
    var msg;
    if (hour < 6) {
        msg = "بامداد شما بخیر !";
    } else if (hour < 11) {
        msg = "صبح شما بخیر !";
    } else if (hour < 15) {
        msg = "ظهر شما بخیر !";
    } else if (hour < 20) {
        msg = "عصر شما بخیر !";
    } else {
        msg = "شب شما بخیر !";
    }
    print(hour);
    print("------------------------");
    print(msg);
    

    请注意,我们不必在两个地方写下我们的限制。没有必要,因为如果之前的 if 为真,我们将不会在以后评估 else ifs。

    现在,对于实际的switch,我们做一些类似的事情,利用JavaScript 的switch 比许多外观相似的语言更强大的事实(JavaScript 的switch 基本上只是一个if/else if):

    var hour = new Date().getHours();
    var msg;
    switch (true) {
        case hour < 6:
            msg = "بامداد شما بخیر !";
            break;
        case hour < 11:
            msg = "صبح شما بخیر !";
            break;
        case hour < 15:
            msg = "ظهر شما بخیر !";
            break;
        case hour < 20:
            msg = "عصر شما بخیر !";
            break;
        default:
            msg = "شب شما بخیر !";
            break;
    }
    print(hour);
    print("------------------------");
    print(msg);
    

    工作原理:JavaScript 的switch 允许case 标签成为表达式。它会根据您在switch 中给出的值评估每个case 源代码顺序,并采用第一个匹配的情况。如果没有匹配的大小写,则使用default(无论源代码中的默认值如何)。

    再说一遍:我不会那样做。但问题是如何 去做。 :-)

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多