04 JS的分支语句和循环语句

97 阅读4分钟

分支语句:根据我们设置好的条件,然后来决定执行哪些代码

1.if 分支语句 语法:

if(条件){满足条件时执行的代码,如果不满足,这里边的代码永远不会执行}

条件最终会返回一个布尔值,如果为真,那么会执行对应的代码;如果为假,那么不会执行

if 分支语句的基本写法


  var a = 3
   //if(条件){要执行的代码}
  if(a===1){//如果a === 1这个条件成立,那么会执行打印1
    console.log(1)
   }
  if(a===2){//如果a === 2这个条件成立,那么会执行打印2
    console.log(2)
   }

if... else...的嵌套写法

  var a = 100
  if (a === 1){
    console.log(1)
  }else if(a === 2){
    console.log(2)
  }else{ //最后结尾的else分支只会在前面所有的条件都不满足的时候才会执行,前面如果有一个条件成立,那么else就不会执行
    console.log('a不等于1或者2')
  }

if分支语句的例题

  1. 根据成绩(0-100)在控制台输出不同的内容:

90+ ->优秀

80-89->中等

70-79->及格

60-69->要努力

0-59 -> 你危险了

   var num=80
   if(num>=90){
    console.log('优秀')
   }else if(num>=80){
    console.log('中等')
   }else if(num>=70){
    console.log('及格')
   }else if(num>=60){
    console.log('要努力')
   }else{
    console.log('你危险了')
   }
  1. 判断一个年份是不是闰年 闰年的条件:1. 4年一润,百年不闰 2. 每四百年补一润
   var year=2024
   if(year % 4 === 0 && year % 100 !==0 || year % 400 === 0){
    console.log('今年是闰年')
   }else{
    console.log('今年不是闰年')
   }

2. switch分支语句

  • 语法:
       switch(要判断的变量){
        case 情况1:
          情况1要执行的代码
          break;
        case 情况2:
          情况2要执行的代码
          break;
     }
     
  • 判断逻辑:判断的变量 是否 === case 上说明的情况

  • 注意: switch...case在判断时,执行的全等,也就是 === 所以数据类型不同时,也不会正确执行.

   var a = '100'
   switch(a){
     case 1:
      console.log('如果我执行,说明a === 1')
      break;
     case 10:
      console.log('如果我执行,说明a === 10')
      break;
     case 100:
      console.log('如果我执行,说明a === 100')
      break;
     case '100':
      console.log('如果我执行,说明a是一个字符串类型的100')
      break;
     default:
      console.log('上述情况都不满足的时候,我会执行')
   }

2.1 switch语句的穿透现象

穿透现象:找到第一个满足的 case 的时候,开始执行这个代码,执行完毕如果没有break 会继续执行下一个case,直到遇到一个break或者分支语句全部执行完毕.

1.switch穿透语法案例:根据月份输出对应的天数(2月按照28天)

   var month = 4 //在控制台输出5月有几天?
   switch(month){
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      console.log('有31天')
      break;

    case 4:
    case 6:
    case 9:
    case 11:
      console.log('有30天')
      break;

    case 2:
      console.log('有28天')
      break;
   }

2.1.根据成绩(0-100)在控制台输出对应的成绩100 ->完美;90+ ->优秀; 80-89->中等;70-79->及格; 60-69->要努力; 0-59 -> 你危险了!

 var num = 87
 switch(num3=parseInt(num/10)){
    case 10:
      console.log('完美')
      break
    case 9:
      console.log('优秀')
      break
    case 8:
      console.log('中等')
      break
    case 7:
      console.log('及格')
      break
    case 6:
      console.log('要努力')
      break
    default:
      console.log('你危险了')
      break
   }

3.三元表达式

  • 别名: 三目表达式 三目运算符 三目 问号冒号表达式
  • 语法: 条件 ?条件为真时执行的代码 :条件为假时执行的代码
  • 意义: 对if 分支语句做一个简化操作
  • 注意:不管条件真还是假 代码都只能写一行!!!
  • 利用三元表达式给变量赋值
   var num = 1 //约定,如果num === 1那么代表为男性;如果num !== 1那么代表为女性
   var gender = num === 1 ? '男' : '女'
   console.log(gender)

4. while循环语句

  • 意义:帮助我们去执行重复的代码

  • 什么是循环语句?根据给出的某些条件,重复执行一段代码

  • 循环语句:1.初始化 2.条件判断3.要执行的代码 4.改变自身(改变初始化的内容)

  • 语法: while(条件){满足条件时执行的代码}

  • whlie案例: 求1-100之间的所有数字相加的和

    var num =1 //1.初始化
    var total=0//用于存储 1-100之间所有数字相加的和
    while(num<=100){ //判断条件
      // total=total + num //要执行的代码
      total += num
      num++ //改变自身
    }
    console.log(total)

5. do...while 循环

是一个类似 while 的循环语句,while 循环在开始的时候,会先判断条件是否成立 然后决定是否执行代码;do...while 循环在开始的时候,不会判断条件,也就是说,不管条件是否成立,第一次都会执行

   var num = 10
    do{//第一次不会管条件是否成立,他一定会执行一次
      //要执行的代码
      console.log(num)
      num--
    }while(num < 5)
  • 案例:

需求:用户输入密码,密码正确,正常向下执行,密码错误,让用户重新输入密码

   var password
   do{
    password = prompt('请您输入密码')
    console.log('密码正确')
   }while(password != '12345') //如果 password !==12345  那么继续执行循环,如果密码正好是12345  那停止循环

6. for循环

  • 也是循环的一种,但是语法上和另外两个不同!
  • 语法:for(1.初始化;2.条件;3.改变自身){4.循环要执行的代码}
   //while循环
    var num = 0
    while(num < 3){
      console.log(num)
      num++
    }
    console.log('手动分割线============')
    //用 for 循环重构
    for(var n = 0; n < 3; n++){
      console.log(n)
    }
  • 案例:1.求1-100之间所有的和 用 for 循环
  var sum = 0
  for(var i = 1; i <= 100; i++){
    sum += i
  }
  console.log(sum)
  • -案例: 2.求1-100之间所有偶数的和 用 for 循环
  var sum = 0
  for(var i = 1; i <= 100; i++){
    i % 2 === 0 ? sum += i : sum += 0
  }
  console.log(sum)
  • 案例: 3.求出1000-2022之间所有的闰年,输出在页面
  //1.求出1000-2022之间所有的年份
  for(var year = 1000; year <= 2022; year++){
      //2.求出这个区间所有的闰年
      if(year % 4 === 0 && year % 100 !== 0 || year % 400 === 0){
        document.write('  ', year,'年是闰年  ')
      }
    }
  • 案例4:求水仙花数(有一个三位数(100-999) 各个位置上的数字的三次方的和 正好等于自身 那么说明这个数字就是水仙花数)
   for(var i = 100; i <= 999; i++){
    //2.1先计算各个位置上的数字的值是什么,也就是想办法拿到个位 十位 百位 的值
    var baiW = parseInt(i / 100)
    var shiW = parseInt(i / 10 % 10)
    var geW = i % 10

    //2.2计算 三个位置上的数字的 三次方的和
    var sum = baiW * baiW * baiW + shiW * shiW * shiW + geW * geW * geW 
    // var sum = Math.pow(baiW,3) + Math.pow(shiW,3) + Math.pow(geW,3)
    //2.3判断 三次方的和 是 等于 自身
    if(sum === i){
      console.log(i,'是一个水仙花数')
    }
   }

7.流程控制语句

通过两个关键字,可以起到控制循环的一个作用,这就是流程控制

  1. break 结束整个循环,不管循环后边还有几轮
   for(var i = 1; i <= 5; i++){
    console.log('我吃了1个包子')
    if(i === 3){
      break  //当循环执行到 i=3 的时候,此时这个if判断的条件成立,开始执行内部代码,也就是执行break,结束整个循环
    }
   }
  1. continue 跳出当前这一轮循环,直接开始下一轮循环
  for(var i = 1; i <= 5; i++){
    if(i === 3){
      console.log('第三个包子掉地上了,我不吃他了')
      continue
    }
    console.log('我吃了1个包子')
   }

8.循环嵌套

  • 案例:在页面上打印99个号
   for(var j = 0; j < 9; j++){ //控制有多少行
      for(var i = 0; i < 9; i++){ //控制一行有多少个
        document.write('*',' ')
      }
      document.write('<br>')
    }
  • 在页面上打印一个三角形
  for(var j = 0; j < 9; j++){
    for(var i = 0; i < j; i++){
      document.write('*')
    }
    document.write('<br>')
   }