初识js--js分支语句(二)

137 阅读4分钟

js分支语句

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

1、if语句

1)语法1:

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

2)语法2:

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

3)语法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)语法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语句的难点不是如何选择语法,而是条件如何书写

  • 示例:
 var num = 0

        if (num === 100) {
            console.log('条件1成立, 所以我执行了')
        } else if (num === 199) {
            console.log('条件2成立, 所以我执行了')
        } else if (num === 10086) {
            console.log('条件3成立, 所以我执行了')
        } else {
            console.log('上述所有条件都不满足, 所以我执行了')
        }

2、switch语句

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

1)语法:

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

2)案例1:用户输入1--7,控制台输出是周几

        var day = prompt('请输入1-7中的一个:') - 0
        switch (day) {
            case 1:
                console.log('周一')
                break
            case 2:
                console.log('周二')
                break
            case 3:
                console.log('周三')
                break
            case 4:
                console.log('周四')
                break
            case 5:
                console.log('周五')
                break
            case 6:
                console.log('周六')
                break
            case 7:
                console.log('周日')
                break
        }

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

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

4)案例2:用户输入年份和月份,控制台输出这个月有多少天

        var year = +prompt('请输入一个年份:')
        var month = +prompt('请输入一个月份:')
        switch (month) {
            case 2:
                if (year % 400 === 0 || year % 4 === 0 && year % 100 !== 0) {
                    console.log(month + '月有29天')
                } else {
                    console.log(month + '月有28天')
                }
                break
            case 4:
            case 6:
            case 9:
            case 11:
                console.log(month + '月有30天')
                break
            default:
                console.log(month + '月有31天')
        }

3、三元表达式

  • 三元表达式(三元运算符/三目运算符/问号冒号表达式)

1)语法:

条件 ? 真-执行的代码 : 假-执行的代码

2)意义:

if else 语句的简写

3)注意:

执行代码的位置只能写一句话

4)常用场景

  • 利用三目执行代码(对if else 的优化)
  • 利用三目给变量赋值

5)示例1:

   var a=1
   var res=a===1?'a=1':'a!=1'
   console.log(res)

6)示例2:

  • 根据性别和体重计算献血量。女性: 体重不超过 50kg 的献血 200毫升, 否则 250毫升;男性: 体重不超过 60kg 的献血 250毫升, 否则 300毫升
sex === '女' ? weight < 50 ? console.log(200 + '毫升') : console.log(250 + '毫升') : weight < 60 ? console.log(250 + '毫升') : console.log(300 + '毫升')