一.JS基础 008-009 语句(P20-P30)

129 阅读8分钟

008. 分支结构

  • 我们的 js 代码都是顺序执行的(从上到下)
  • 逻辑分支就是根据我们设定好的条件来决定要不要执行某些代码
8-1 IF 条件分支结构(重点)

if 语句

  • 通过一个 if 语句来决定代码是否执行

  • 语法: if (条件) { 要执行的代码 }

  • 通过 () 里面的条件是否成立来决定 {} 里面的代码是否执行

    // 条件为 true 的时候执行 {} 里面的代码
    if (true) {
      alert('因为条件是 true,我会执行')
    }
    
    // 条件为 false 的时候不执行 {} 里面的代码
    if (false) {
    	alert('因为条件是 false,我不会执行')    
    }
    
        var sum = 210
        var youhuisum 
        if(sum>200){
            youhuisum =sum-10
            //可以写多个语句
        }
        console.log(sum,youhuisum)//210 200
       var sum = 190
       var youhuisum 
       if(sum>200){
           youhuisum =sum-10
       }
       console.log(sum,youhuisum)//190 undefined

if else 语句

  • 通过 if 条件来决定,执行哪一个 {} 里面的代码

  • 语法: if (条件) { 条件为 true 的时候执行 } else { 条件为 false 的时候执行 }

  • 两个 {} 内的代码一定有一个会执行

    // 条件为 true 的时候,会执行 if 后面的 {} 
    if (true) {
      alert('因为条件是 true,我会执行')
    } else {
      alert('因为条件是 true,我不会执行')
    }
    
    // 条件为 false 的时候,会执行 else 后面的 {}
    if (false) {
      alert('因为条件为 false,我不会执行')
    } else {
      alert('因为条件为 false,我会执行')
    }
    
        var sum = 190
        var youhuisum 
        if(sum>200){
            youhuisum =sum-10
        }else{
            youhuisum =sum
        }
        console.log(sum,youhuisum)//190 190

if else if ... 语句

  • 可以通过 ifelse if 来设置多个条件进行判断

  • 语法:if (条件1) { 条件1为 true 的时候执行 } else if (条件2) { 条件2为 true 的时候执行 }

  • 会从头开始依次判断条件

    • 如果第一个条件为 true 了,那么就会执行后面的 {} 里面的内容
    • 如果第一个条件为 false,那么就会判断第二个条件,依次类推
  • 多个 {} ,只会有一个被执行,一旦有一个条件为 true 了,后面的就不在判断了

    // 第一个条件为 true,第二个条件为 false,最终会打印 “我是代码段1”
    if (true) {
      	alert('我是代码段1')
    } else if (false) {
    	alert('我是代码段2')           
    }
    
    // 第一个条件为 true,第二个条件为 true,最终会打印 “我是代码段1”
    // 因为只要前面有一个条件满足了,就不会继续判断了
    if (true) {
      	alert('我是代码段1')
    } else if (true) {
      	alert('我是代码段2')
    }
    
    // 第一个条件为 false,第二个条件为 true,最终会打印 “我是代码段2”
    // 只有前一个条件为 false 的时候才会继续向后判断
    if (false) {
      	alert('我是代码段1')
    } else if (true) {
      	alert('我是代码段2')
    }
    
    // 第一个条件为 false,第二个条件为 false,最终什么也不会发生
    // 因为当所有条件都为 false 的时候,两个 {} 里面的代码都不会执行
    if (false) {
      	alert('我是代码段1')
    } else if (false) {
      	alert('我是代码段2')
    }
    

if else if … else 语句

  • 和之前的 if else if ... 基本一致,只不过是在所有条件都不满足的时候,执行最后 else 后面的 {}

    // 第一个条件为 false,第二个条件为 false,最终会打印 “我是代码段3”
    // 只有前面所有的条件都不满足的时候会执行 else 后面的 {} 里面的代码
    // 只要前面有一个条件满足了,那么后面的就都不会执行了
    if (false) {
      	alert('我是代码段1')
    } else if (false) {
      	alert('我是代码段2')
    } else {
      	alert('我是代码段3')
    }
    
var sum = 90
        var youhuisum 
        if (sum>200) {
            youhuisum =sum-10
        } else if(sum>100){
            youhuisum =sum-5
        } else if(sum>50){
            youhuisum =sum-3
        } else{
            youhuisum =sum
        }
        console.log(sum,youhuisum)//90 87

一个语句成立,下面的语句就不再执行了

8-2 SWITCH 条件分支结构(重点)
  • 也是条件判断语句的一种

  • 是对于某一个变量的判断

  • 精准匹配

  • 语法:

    switch (要判断的变量) {
      case 情况1:
        情况1要执行的代码
        break
      case 情况2:
        情况2要执行的代码
        break
      case 情况3:
        情况3要执行的代码
        break
      default:
        上述情况都不满足的时候执行的代码
    }
    
    • 要判断某一个变量 等于 某一个值得时候使用
  • 例子🌰: 1.订单状态

     /*
          订单状态码
          1 未付款
          2 已付款
          3.已发货
          4.已完成
        */ 
        var  code = 3
        
        switch (code) {
            case 1 :
                document.write("未付款")
                break;
            case 2 :
                document.write("已付款")
                break;
            case 3 :
                document.write("已发货")
                break;
            case 4 :
                document.write("已完成")
                break;
            default :
                document.write("出错了")
        }
    
        /*
          注意:
           1. ===
           2. 不要比较运算符
           3. break;必须写
        */
    }
    

2.根据 1 ~ 12 的数字来输出一个月有多少天, 不考虑闰年

        var month = 2
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                console.log("31天")
                break;
            case 2: 
                console.log("28天")        
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                console.log("30天")
                break;
            default:
                break;
        }

3.成绩的案例改写 switch

        var score =76
        var flagScore = parseInt(score/10)
        switch (flagScore) {
           
            case 10:
            case 9:
                console.log("A")
                break;
            case 8: 
                console.log("B")        
                break;

            case 7: 
                console.log("C")        
                break;
            case 6:
                console.log("D")        
                break;
            default:
                console.log("E")   
                break;
        }
        

009. 循环结构(重点)

  • 根据某些给出的条件,重复的执行同一段代码
  • 循环必须要有某些固定的内容组成
    1. 初始化
    2. 条件判断
    3. 要执行的代码
    4. 自身改变
9-1 WHILE 循环
  • while,中文叫 当…时,其实就是当条件满足时就执行代码,一旦不满足了就不执行了

  • 语法 while (条件) { 满足条件就执行 }

  • 因为满足条件就执行,所以我们写的时候一定要注意,就是设定一个边界值,不然就一直循环下去了

    // 1. 初始化条件
    var num = 0;
    // 2. 条件判断
    while (num < 10) {
      // 3. 要执行的代码
      console.log('当前的 num 的值是 ' + num)
      // 4. 自身改变
      num = num + 1
    }
    
    • 如果没有自身改变,那么就会一直循环不停了
        var n = 2;

        while (n<10) {
            console.log("li",n)
            //自身改变,步长
            n+=2
        }

        //死循环————一直满足

案例

 //案例1: 求 1 ~ 100 所有数字的和 5050

        var n = 1
        var sum = 0
        while (n<=100) {
           // console.log(n)
            sum+=n
            n++
         }
         console.log(sum)
        // 案例2: 求一个数字的阶乘 5*4*3*2*1   6*5*4*3*2*1


        var n = 3
        var sum = 1
        while (n>0) {
            // console.log(n)
            sum*=n
            n--
        }

        console.log(sum)
9-2 DO WHILE 循环
  • 是一个和 while 循环类似的循环

  • while 会先进行条件判断,满足就执行,不满足直接就不执行了

  • 但是 do while 循环是,先不管条件,先执行一回,然后在开始进行条件判断

  • 语法: do { 要执行的代码 } while (条件)

    // 下面这个代码,条件一开始就不满足,但是依旧会执行一次 do 后面 {} 内部的代码
    var num = 10
    do {
      console.log('我执行了一次')
      num = num + 1
    } while (num < 10)
    
        // while(false){
        //     console.log("hello ")
        // }

        do {
            console.log("hello")
        } while (false)


        var n = 0
        do {
            console.log("li",n)
            n++
        } while (n<10)
  • 案例
  • 1.1-100的和
        var n = 1
        var sum = 0
        do {
            sum+=n
            n++
        } while (n<=100)
        console.log(sum)
  • 2.不输入关不掉

        //alert("111") //bom

        //prompt("请输入你的名字")

        do {
          var res = prompt("请输入你的名字")
        //   console.log(res)
          if (res) {
            document.write(res)
          }
        } while (!res)
9-3 for 循环
  • whiledo while 循环都不太一样的一种循环结构

  • 道理是和其他两种一样的,都是循环执行代码的

  • 语法: for (var i = 0; i < 10; i++) { 要执行的代码 }

    // 把初始化,条件判断,自身改变,写在了一起
    for (var i = 1; i <= 10; i++) {
      // 这里写的是要执行的代码
      console.log(i)
    }
    
    // 控制台会依次输出 1 ~ 10 
    
for(var n=1;n<=10;n++){
            // console.log(n)
            if (n<=3) {
                console.log("广告商品",n)
            } else {
                console.log("普通商品",n)
            }
        }
  • 这个只是看起来不太舒服,但是用起来比较好用
  • 案例

1000-2000闰年

        var count = 0
         for(var n=1000; n<=2000; n+=4){
            if(n%400===0 || n%100!==0) {
                document.write(n+" ")
                // document.write("<br>")
                count++
                if (count%4===0) {
                    document.write("<br/>")
                }
            }
            
        }


9-4 BREAK 终止循环
  • 在循环没有进行完毕的时候,因为我设置的条件满足,提前终止循环

  • 比如:我要吃五个包子,吃到三个的时候,不能在吃了,我就停止吃包子这个事情

  • 要终止循环,就可以直接使用 break 关键字

    for (var i = 1; i <= 5; i++) {
      // 每循环一次,吃一个包子
      console.log('我吃了一个包子')
      // 当 i 的值为 3 的时候,条件为 true,执行 {} 里面的代码终止循环
      // 循环就不会继续向下执行了,也就没有 4 和 5 了
      if (i === 3) {
        break
      }
    }
    
9-5 CONTINUE 结束本次循环
  • 在循环中,把循环的本次跳过去,继续执行后续的循环

  • 比如:吃五个包子,到第三个的时候,第三个掉地下了,不吃了,跳过第三个,继续吃第四个和第五个

  • 跳过本次循环,就可以使用 continue 关键字

    for (var i = 1; i <= 5; i++) {
      // 当 i 的值为 3 的时候,执行 {} 里面的代码
      // {} 里面有 continue,那么本次循环后面的代码就都不执行了
      // 自动算作 i 为 3 的这一次结束了,去继续执行 i = 4 的那次循环了
      if (i === 3) {
        console.log('这个是第三个包子,掉地下了,我不吃了')
        continue
      }
      console.log('我吃了一个包子')
    }
    

案例

P31 求质数

求质数
质数: 除了 1 和 自己本身 以外, 没有其他约数
3 5 7 11 13 17 ...
判断一个数字是质数的思路: 7
=> 7 % 2 不为 0
=> 7 % 3 不为 0
=> 7 % 4 不为 0
=> 7 % 5 不为 0
=> 7 % 6 不为 0

//   var n =71
        //   var isZhiShu = true
        //   for(var i=2;i<=n/2;i++){
        //       if(n%i===0){
        //         isZhiShu = false
        //         break
        //       }
        //       console.log(i)
        //   }

        //   if(isZhiShu) {
        //       console.log("是")
        //   }else{
        //       console.log("不是")
        //   }
          var n =111
          for(var i=2;i<=n/2;i++){
              if(n%i===0){
                break
              }
              console.log(i)
          }

          if(i<=n/2) {
              console.log("不是")
          }else{
              console.log("是")
          }

        //   for(var i=0;i<=5;i++){
            
        //   }
        //   console.log(i)


P32 九九乘法表

image-20220516112555912.png