如何在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);
答案 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
(无论源代码中的默认值是什么)。
再说一次:我不会这样做。但问题是如何来做到这一点。 : - )