上QQ阅读APP看书,第一时间看更新
2.3 条件判断
除了第1章中简单介绍过的if语句,JavaScript还提供了几种其他条件判断机制,我们也应该了解一下。
你有时可能会编写出一系列的if..else..if语句,如下所示:
if (a == 2) { // 做某件事情 } else if (a == 10) { // 做另一件事情 } else if (a == 42) { // 做另一件事情 } else { // 反馈到这儿 }
这样的结构可以运行,但是有点繁复,因为你需要为每种情况都指定一个测试。switch语句是另一种选择:
switch (a) { case 2: // 做某件事情 break; case 10: // 做另一件事情 break; case 42: // 做另一件事情 break; default: // 反馈到这儿 }
如果只想要运行某个case下的语句,那么break是很重要的。如果某个case省略了break,而这个case匹配或运行的话,那么会一直执行到下一个case的语句,不管那个case是否匹配。这种所谓的“通过(fall through)”有时是很有用的。
switch (a) { case 2: case 10: // 某个很棒的东西 break; case 42: // 其他东西 break; default: // 反馈 }
在上述示例中,如果2或者10匹配的话,那么就会执行“某个很棒的东西”代码语句。
在JavaScript中,条件判断的另一种形式是“条件运算符”,通常被称为“三进制运算符”。它更像是单个if..else语句的紧凑版,如下所示:
var a = 42; var b = (a > 41) ? "hello" : "world"; // 与以下类似: // if (a > 41) { // b = "hello"; // } // else { // b = "world"; // }
如果条件表达式(这里是a > 41)求值为真,那么就会返回第一个子句("hello");否则,结果就是第二个子句("world"),不论结果是什么,都会赋给b。
条件运算符并不一定要用在赋值上,但这肯定是最常见的用法。
有关switch和? :的测试条件及其他模式的更多信息,参见本系列中的《你不知道的JavaScript(中卷)》第一部分。