while循环

244 阅读1分钟

循环语句

  • 什么是循环语句
    • 根据某些给出的条件,重复执行同一段代码
  • 循环必须要有某些固定的内容组成
    • 初始化
    • 条件判断
    • 要执行的代码
    • 自身改变

while 循环语句

  • while,中文叫 当…时,其实就是当条件满足时就执行代码,一旦不满足了就不执行了
  • 语法 while (条件) { 满足条件就会执行 }
  • 因为满足条件就执行, 所以我们写的时候一定要注意, 就是设定一个边界值, 不然就一直循环下去了, 简称: 死循环, 电脑卡死的时间根据电脑性能有所不同, 建议不要尝试
// 1. 初始化条件
var num = 0
// 条件判断
while (num < 10) {
    // 3. 要执行的代码
    console.log('当前 num 的值是: ', num)
    // 4. 自身改变
    num += 1    // 如果没有这行代码, 那么自身就没有改变, 条件将会一直满足, 代码也就会一直执行
}

do...while 循环语句

  • 是一个和 while 循环类似的循环
  • while 会先进行条件判断, 满足就执行, 不满足就直接不执行了
  • do...while 的循环是 先不管条件, 先执行一次, 然后再开始进行条件判断
  • 语法: do { 要执行的代码 } while (条件)
// 1. 初始化
var num = 10;
do {
    // 3. 要执行的代码
    console.log('我执行了一次')
    // 4. 自身改变
    num += 1
// 2. 条件判断
} while (num < 10)

for 循环语句

  • 和 while do while 循环都不太一样的一种循环结构
  • 但道理是和其他两种一样的, 都是循环执行代码的
  • 语法: for (var i = 0; i < 10; i++) { 要执行的代码 }
// 把初始化, 条件判断, 自身改变, 都统一写在了一起
for (var i = 1; i <= 10; i++) {
    console.log(i)  // 会打印 1~10
}
// 初次使用时会觉得有一点繁琐与不习惯, 但是用起来比较好用

循环嵌套的书写

  • 循环嵌套其实就是一个循环内部又写了一个循环
for (var i = 0; i < 3; i++) {   // 这个循环称为 外层循环
    for (var k = 1; k < 4; k++) {   // 这个循环称为 内层循环
        /**
         * 重点!!!
         *          两个循环的循环变量不能相同, 会有冲突
        */
    }
}
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /**
         *  求 1~30 中的所有质数
         * 
         *      如果你能够判断一个数字是不是质数, 那么你就能够完成上述案例
         *          
         * 
         *      除了1和它本身, 没有能够整除的数字
         * 
         *          7   (是质数)
         *              1~7 (除了1和它本身 就剩下 2~6)
         *              7 % 2 !== 0
         *              7 % 3 !== 0
         *              7 % 4 !== 0
         *              7 % 5 !== 0
         *              7 % 6 !== 0
         * 
         *          8   (不是一个质数)
         *              1~8  (除了1和它本身 就剩下 2~7)
         *              8 % 2 === 0
         *              8 % 3 !== 0
         *              8 % 4 === 0
         *              8 % 5 !== 0
         *              8 % 6 !== 0
         *              8 % 7 !== 0
         * 
         *          9   (不是一个质数)
         *              1~9   (除了1和它本身 就剩下 2~8)
         *              9 % 2 !== 0
         *              9 % 3 === 0
         *              9 % 4 !== 0
         *              9 % 5 !== 0
         *              9 % 6 !== 0
         *              9 % 7 !== 0
         *              9 % 8 !== 0
         * 
         *      假设 数字 为 n
         *          1. 找到 2~n-1 的所有数字
         *          2. 找有没有能够和 n 完成 整除的 数字
         *                  有 代表 不是质数
         *                  没有 代表 是质数
        */


        // 当前案例为 判断一个数字是不是质数=============================================

        // 假设 数字 为 n
        // var n = 6
        // var sum = 0 // 用于完成计数器, 当 for 循环内部的 if 语句 执行的时候, 会改变 sum 的值

        // // 1. 找到 2~n-1 的所有数字
        // for (var i = 2; i < n; i++) {

        //     // 2. 找有没有能够和 n 完成 整除的 数字
        //     if (n % i === 0) {
        //         // console.log(i, '当你看到我的时候 说明有一个数字能够和', n, '完成整除')

        //         // 当前 分支内 如何修改 sum 的值(修改为什么)  并不重要, 重要的是 不能等于 初始值
        //         sum++
        //         // sum = 100
        //         // sum = true
        //     }
        // }

        // // 只要 当前 sum === 0 就证明 上述的 循环内的分支没有执行过
        // if (sum === 0) {
        //     console.log(n, '是一个质数')
        // }
        // =============================================================================


        // 求 1~30 以内的所有质数

        // 当前循环只是拿到了 1~30 的所有数字, 没有任何特殊含义, 但是这样写 会将 数字 1 也算作 质数
        for (var n = 1; n < 31; n++) {  
            var sum = 0 // 用于完成计数器, 当 for 循环内部的 if 语句 执行的时候, 会改变 sum 的值

            // 1. 找到 2~n-1 的所有数字
            for (var i = 2; i < n; i++) {
                // 2. 找有没有能够和 n 完成 整除的 数字
                if (n % i === 0) {
                    sum++
                }
            }

            // 只要 当前 sum === 0 就证明 上述的 循环内的分支没有执行过
            if (sum === 0) {
                console.log(n, '是一个质数')
            }
        }


        /**
         *  循环嵌套 其实就是 在一个 for 循环中, 又书写了一个 for 循环
         * 
         *  注意点就是 两个 循环 初始化的变量 不要相同
        */
    </script>
</body>

</html>