JavaScript循环语句

90 阅读1分钟

1. while循环

  • 语法如下:

    • 当条件成立时,执行代码块
    • 当条件不成立时,跳出代码块

    while.png

  • 如果条件一直成立(为true),那么会产生死循环

    • 这个时候必须通过关闭页面来停止死循环
    • 开发中一定要避免死循环的产生
    // 计算0~99的偶数和
    var count = 0
    var totalCount = 0
    while (count < 100) {
      if (count % 2 === 0) {
        totalCount += count
      }
      count++
    }
    
    console.log("所有的偶数和:", totalCount) // 2450
    
    // 算法优化
    var count = 0
    var totalCount = 0
    while (count < 100) {
      totalCount += count
      count += 2
    }
    
    console.log("所有的偶数和:", totalCount) // 2450
    

2. do..while循环

  • do..while循环和while循环非常像,二者经常可以相互替代(不常用)

    • 但是do..while的特点是不管条件成不成立,do循环体都会先执行一次

    do-while.png

    // 计算0~99的数字和
    var count = 0
    var totalCount = 0
    do {
      totalCount += count
      count++
    } while (count < 100)
    console.log("totalCount:", totalCount) // 4950
    

3. for循环

  • 语法

    for.png

    table.png

  • begin 执行一次,然后进行迭代:每次检查 condition 后,执行 body 和 step

    // 0~99的奇数和
    var totalCount = 0
    for (var i = 0; i < 100; i++) {
      if (i % 2 !== 0) {
        totalCount += i
      }
    }
    console.log("totalCount:", totalCount) // 2500
    
    // 算法优化
    var totalCount = 0
    for (var i = 1; i < 100; i+=2) {
      totalCount += i
    }
    console.log("totalCount:", totalCount) // 2500
    

4. for循环的嵌套

  • 简单理解:外层循环一次,内层循环完整执行执行

  • ♥ 组成三角形

    for (var i = 0; i < 6; i++) {
      document.write("<div>")
    
      for (var m = 0; m < i+1; m++) {
        document.write("❤ ")
      }
    
      document.write("</div>")
    }
    

    image.png

  • 99乘法表

    document.write("<table>")
    
    for (var i = 0; i < 9; i++) {
      document.write("<tr>")
    
      for (var m = 0; m < i+1; m++) {
        var a = m + 1
        var b = i + 1
        var result = (m+1)*(i+1)
        document.write(`<td>${a}*${b}=${result}</td>`)
      }
    
      document.write("</tr>")
    }
    
    document.write("</table>")
    

    image.png

5. 循环的控制

  • break: 直接跳出循环, 循环结束

    • break 某一条件满足时,退出循环,不再执行后续重复的代码
  • continue: 跳过本次循环次, 执行下一次循环体

    • continue 指令是 break 的“轻量版”

    • continue 某一条件满足时,不执行后续重复的代码

    var names = ["abc", "cba", "nba", "mba", "bba", "aaa", "bbb"]
    
    // 循环遍历数组
    // break关键字的使用
    // 需求: 遇到nba时, 不再执行后续的迭代
    // for (var i = 0; i < 4; i++) {
    //   console.log(names[i])
    //   if (names[i] === "nba") {
    //     break
    //   }
    // }
    
    // continue关键字的使用: 立刻结束本次循环, 执行下一次循环(step)
    // 需求: 不打印nba
    for (var i = 0; i < 7; i++) {
      if (names[i] === "nba" || names[i] === "cba") {
        continue
      }
      console.log(names[i])
    }