使用JavaScript中的switch语句编写if..else语句

时间:2015-09-27 12:38:16

标签: javascript switch-statement

如何在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);

2 个答案:

答案 0 :(得分:3)

由于hour只有24个离散值,您可以在交换机案例中处理所有这些值:

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更合适。

答案 1 :(得分:1)

我在开头就说我不会将其重写为switch。但我肯定会改变它。 (不过我会做下面的switch。)

首先,您的"ساعت وارد شده نامعتبر است !"案件永远不会发生。 getHours返回0到23之间的数字,包括0和23。因此,无需处理< 0>= 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);

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

现在,对于实际的switch,我们会做类似的事情,因为JavaScript的switch比许多类似的语言(JavaScript&#39; s {{{{{ {1}}基本上只是一个switch):

if/else if

工作原理:JavaScript 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); 允许switch标签为表达式。它会根据您在case中给出的值评估源代码顺序中的每个case ,并采用匹配的第一个案例。如果没有匹配的情况,则使用switch(无论源代码中的默认值是什么)。

再说一次:我不会这样做。但问题是如何来做到这一点。 : - )