这是对Gumbo 答案的更正。我写一个单独的答案只是因为这不适合作为评论。
编辑: Gumbo 在评论中建议我可能误读了 Doug 的意图。如果 OP 真的希望在 count >= 4 时打印出“bye”和“lol”,那么我们需要break
从switch
. 这些案例现在恢复到原来的顺序,因此“再见”和“大声笑”按该顺序打印(这显然是 OP 的意图。)
switch (true) {
case (count == 2):
document.write("hi");
break;
case (count > 3):
document.write("bye");
// No break here; just fall through.
case (count >= 4):
document.write("lol");
break;
}
在这种情况下,我同意 Gumbo 的意见,即修改后的if
声明是正确的。
原来的答案如下(假设OP真的想无论是“笑”或“再见”来打印,但不能同时使用。)
Gumbo 编写的switch
语句不适用于 count >= 4,原因与 Gumbo 的原始语句不起作用的原因大致相同:因为案例是按顺序计算的,count >= 4 意味着第二种情况 (count > 3 ) 将被执行;所以脚本永远不会到达 count >= 4 的测试。为了解决这个问题,测试应该以相反的顺序执行,从高到低:if
switch (true) {
case (count >= 4):
document.write("lol");
break;
case (count > 3):
document.write("bye");
break;
case (count == 2):
document.write("hi");
break;
}
更正后的if
语句仍然不正确,因为对于 count >= 4 它将在输出中同时 产生bye
和lol
。同样,if
阶梯内的测试应安排为从最高值到最低值:
if (count >= 4) {
document.write("lol");
} else if (count > 3) {
document.write("bye");
} else if (count == 2) {
document.write("hi");
}
这不是一个理想的例子,因为如果count
是一个整数,那么评估count >= 4
和count > 3
将产生相同的结果——true
计数> = 4,false
否则。如果count
是浮点值,则情况并非如此(但是,名为“count”的浮点值会引起其他问题。)