JS的分支语句

95 阅读3分钟

什么是分支语句?

  • JS在执行的时候,是按照从上往下的顺序执行的
  • 所以我们书写的所有代码都会执行, 区别就是执行顺序的问题
  • 所以分支语句的一个核心就是给了我们 基于某一个条件决定执行某一段代码的能力

1. if 语句

语法1:

    if (条件) { 书写如果条件成立, 需要执行的代码 }
  • 条件为真就会执行大括号内的代码, 否则不执行条件。可以直接书写布尔值, 也可以书写一个表达式, 或者一个数字;只要你书写的不是一个布尔值, 那么会隐式转换为 一个布尔值。

语法2:

    if (条件) {
         书写如果条件成立, 需要执行的代码
         } else {
        当上边的条件不成立的时候, 我会执行, 如果上边的条件成立了, 我就不执行了
        }

语法3:


     if (条件1) {
         如果条件1成立, 那么我会执行, 同时后续的所有 else if 或者 else 都不会执行了
        } else if (条件2) {
        如果条件1不成立, 但是条件2成立了, 那么我会执行 , 同时后续的所有 else if 或者 else 都不会执行了
        } else if (条件3) {
         如果条件1和条件2都不成立, 但是条件3成立了, 那么我会执行 , 同时后续的所有 else if 或者 else 都不会执行了
         } 

语法4:

     if (条件1) {
        如果条件1成立, 那么我会执行, 同时后续的所有 else if 或者 else 都不会执行了
        } else if (条件2) {
        如果条件1不成立, 但是条件2成立了, 那么我会执行 , 同时后续的所有 else if 或者 else 都不会执行了
        } else if (条件3) {
        如果条件1和条件2都不成立, 但是条件3成立了, 那么我会执行 , 同时后续的所有 else if 或者 else 都不会执行了
        } else {
        如果上述的所有条件都不成立, 那么我会执行, 否则就不执行
        }

注意: if语句的难点不是如何选择语法,难点是 if 语句的条件如何书写

2. switch语句

主要用于某一个变量的具体值, 做判断 (全等 ===)

        switch (变量) {       
            case 100:
                当变量的值 === 100 的时候会执行
                break;
            case 101:
                当变量的值 === 101 的时候会执行
                break;
            default:
                当上述条件都不满足的时候, 执行
        }

switch 的穿透现象 (穿刺现象)

    在书写 case 的时候, 没有书写 break,如果这个 case 符合条件就会执行它内部的代码。代码执行完毕后, 没有发现 break, 所以会继续向下执行,不管下一个 case 条件是否满足直到遇见下一个 break 或者当前 switch 代码全都执行完毕。

        // 用户输入月份 判断当月有几天
        var m = prompt("请输入一个月份") - 0
        var y = prompt("请输入一个年份") - 0

        switch (m) {
            case 2:
                // 根据用户输入的年份 决定输出 28 还是 29
                if (y % 4 === 0 && y % 100 !== 0 || y % 400 === 0) {
                    console.log('29')
                } else {
                    console.log('28')
                }
                break
            case 4:
            case 6:
            case 9:
            case 11:
                console.log('30天')
                break
            default:
                console.log('31天')
        }

3. 三目运算符

  • 三元表达式 (三元运算符/三目运算符/问号冒号表达式)
  • 也是分支语句的一种, 对 if 语句的一个优化
  • 语法:   条件 ? 条件为真的时候执行的代码(只有一行) : 条件为假的时候执行的代码
        var box = 1
        var msg = box === 1 ? '成功' : '失败'
        console.log(msg)