条件语句

条件判断语句指的是根据指定的条件所返回的结果(真或假或其他预定义的),来执行特定的语句。

JavaScript 支持两种条件判断语句:ifswitch

if 语句适合于区间判断,switch 语句适用于等值判断。可以将 switch 理解为 if 的另一种结构清晰的写法。

if 语句

语法
1if (condition) {
2  statement1;
3} else {
4  statement2;
5}

这里的条件(condition)可以是任何表达式,并且求值结果不一定是布尔值,ECMAScript 会自动调用 Boolean() 函数将这个表达式的值转换为布尔值。

如果条件求值为 true,则执行语句 statement1;如果条件求值为 false,则执行 statement2

扩展写法

单分支
1// 单分支:
2if (condition) {
3  statement;
4}

如果只有一条代码块,可以不用写 {}

1if (condition) statement;
多分支
1// 多分支:
2if (condition1) {
3  statement1;
4} else if (condition2) {
5  statement2;
6} else if (condition3) {
7  statement3;
8} else {
9  statementn;
10}

先判断条件1,若条件1满足则执行代码块1,其它不执行;

若条件1不满足则向下判断条件2,此时若条件2满足则执行代码块2,其它不执行;

若条件2依然不满足则继续向下判断,依次类推;

最终若以上条件都不满足,就执行else里的代码块n。


三元运算符

三元运算符是针对 if 判断的简写形式。

1condition ? statement1 : statement2

switch

语法
1// 一般用于等值判断
2switch (expression) {
3  case value1:
4    statement;
5    break;
6  case value2:
7    statement;
8    break;
9  default:
10    statement;
11    break;
12}

这里的每个 case(条件/分支)相当于:如果表达式等于后面的值,则执行下面的语句。

break 关键字会导致代码执行跳出 switch语句。如果没有break,则代码会继续匹配下一个条件(case穿透)。为避免不必要的条件判断,最好给每个条件后面都加上 break 语句。

default 关键字用于在任何条件都没有满足时指定默认执行的语句(相当于 else 语句)。

注意:switch语句在比较每个条件的值时会使用全等操作符,因为不会强制转换数据类型。(比如,字符串"10"不等于数值10)

switch语句可以用于所有数据类型,因此可以使用字符串甚至对象。

1switch ("code") { // 字符串类型
2  case "code":
3    console.log("匹配code");
4    break;
5  default:
6    console.log("匹配default");
7    break;
8}

最佳实践

如果确实需要连续匹配几个条件,那么推荐写个注释表明是故意忽略了 break

1switch (expression) {
2  case value1:
3  /* 跳过 */
4  case value2:
5    statement;
6    break;
7  default:
8    statement;
9    break;
10}