条件语句


条件语句指的是通过判断指定表达式的值来决定执行还是跳过某些语句。

if

if 语句是一种基本的控制语句,它让 JavaScript 可以选择执行路径,换句话说,就是有条件地执行语句,在这种情况下需要执行条件表达式的值,如果是真值则执行,否则不执行:

if (!username)
    username = '学院君';

if 语句的第二种形式引入了 else 从句,当表达式的值是 false 时执行 else 中的逻辑:

if (!username) 
    username = '学院君';
else 
    username = '还是学院君';

多层嵌套时需要注意 JavaScript 中 ifelse 的匹配规则是就近匹配:else 总是和就近的 if 语句匹配,为了增强代码可读性,可维护性,需要适当使用花括号:

if (i == j) {
    if (j == k) {
        console.log('i equals k');
    }
} else {
    console.log("i doesn't equal j");
}

else if

if/else 语句只能判断一个条件表达式,如果有多个条件表达式需要判断怎么办?一种解决方案是 else if 语句,else if 并不是真正的 JavaScript 语句,而是多条 if/else 语句连在一起的惯用写法:

if (n == 1) {
    // 执行代码块1
} else if (n == 2) {
    // 执行代码块2
} else if (n == 3) {
    // 执行代码块3
} else {
    // 之前条件都不满足则执行这里的代码块
}

switch

前面提到有多个条件表达式需要判断时可以使用 else if,但这个并不是最好的解决方案,一般这种情况下使用 switch 语句更合适:

switch(n) {
    case 1:
        // 执行代码块1
        break;
    case 2:
        // 执行代码块2
        break;
    case 3:
        // 执行代码块3
        break;
    default:
        // 上述条件都不满足,执行代码块4
        break;
}

需要注意的是上面的代码中,每一个 case 语句结尾处都使用了关键词 breakbreak 语句的作用是使解释器跳出 switch 语句或循环语句,如果没有 break 语句,那么 switch 语句就会从与表达式匹配的地方开始,依次执行后续语句,一直到下一个 break 语句或 switch 语句结尾,这是初学者比较容易犯的错。如果是在函数中使用 switch,还可以用 return 来替代 break

function convert(x) {
    switch(typeof(x)) {
        case 'number':
            return x.toString(16);
        case 'string':
            return '"' + x + '"';
        default:
            return String(x);
    }
}

注:每个 case 的匹配操作使用的是 === 恒等运算符做比较,而不是== 相等运算符,因此,表达式和 case 的匹配并不会做任何类型转换。


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: 声明语句

>> 下一篇: 循环语句