循环语句

106 阅读3分钟

while 循环

while (条件) {条件成立循环执行的代码}

  • 不管什么循环都必须由以下几个内容组成
  1. 初始化
  2. 条件判断
  3. 要执行的代码
  4. 自身的改变
    • 第四步如果不写, 那么这个循环就是一个 死循环
    • 结束的时候 就是 电脑 冒烟的时候
        // 1. 初始化
        var num = 1
        // 2. 条件判断
        while (num < 5) {
            // 3. 要执行的代码 (这里的代码数量不限制)
            console.log(num)

            // 4. 自身的改变
            num++
        }
        console.log(num)    // 5
 /**
 *  1. 初始化
 *      var num = 1         num === 1
 * 
 *  2. 循环开始执行
 *      2.1 判断 条件是否满足   num < 5     条件 满足, 开始执行 第一轮循环
 *          循环内的代码
 *              console.log(num)    --- 1
 *              num++           当前 num 的值 还是 1  但是下一次使用num 的时候就是2了
 *          循环内的代码执行完毕, 第一轮循环到此结束
 * 
 *      2.2 判断 条件 是否满足  num < 5     条件满足, 开始执行 第 2 轮 循环
 *          循环内的代码
 *              console.log(num)    --- 2
 *              num++           当前 num 的值 还是 2  但是下一次使用num 的时候就是3了
 *          循环内的代码执行完毕, 第 2 轮循环到此结束
 * 
 *      2.3 判断 条件 是否满足  num < 5     条件满足, 开始执行 第 3 轮 循环
 *          循环内的代码
 *              console.log(num)    --- 3
 *              num++           当前 num 的值 还是 3  但是下一次使用 num 的时候就是 4 了
 *          循环内的代码执行完毕, 第 3 轮循环到此结束
 * 
 *      2.4 判断 条件 是否满足  num < 5     条件满足, 开始执行 第 4 轮 循环
 *          循环内的代码
 *              console.log(num)    --- 4
 *              num++           当前 num 的值 还是 4  但是下一次使用 num 的时候就是 5 了
 *          循环内的代码执行完毕, 第 4 轮循环到此结束
 * 
 * 
 *      2.5 判断条件 是否满足   num < 5     因为上一轮循环完毕后 num === 5
 *              所以此时条件不满足, 循环到此结束
 */

do...while 循环

do {要循环执行的代码} while (条件)

  • 区别:
    1. while: 会先判断条件, 如果条件成立那么在开始执行循环
    2. do...while: 不管条件是否成立, 先执行一次循环的代码, 然后判断条件是否成立, 决定是否开启下一轮循环
        var num = 10086
        while (num < 5) {
            console.log(num)
            num++
        }
        // 1. 初始化
        var num = 10086
        do {
            // 3. 循环要执行的代码
            console.log(num)
            // 4. 改变自身
            num++
        } while (num < 5)  // 2. 判断条件

        console.log(num)

for 循环

for (1. 初始化; 2. 判断条件; 4. 改变自身) { 3. 循环要执行的代码 }

        /**
         *  有一个三位数
         *      每个位置上的三次方之和 正好等于自身
         *
         *  帮我找出 所有的水仙花数
         *
         *
         * 举例:
         *      123
         *          1 * 1 * 1    + 2 * 2 * 2    + 3 * 3 * 3  === 是否等于 123
         *              如果等于 那么就是水仙花数
         *              否则不是
         *
         *
         *  逻辑:
         *      1. 找到所有的 三位数 (100~999)
         *      2. 找到某一个三位数的各个位置的值
         *      3. 计算三个位置上各个数字的三次方之和
         *      4. 对比 是否等于自身
        */

        // 1. 找到所有的 三位数 (100~999)
        for (var i = 100; i < 1000; i++) {
            // console.log(i)

            // 2. 找到某一个三位数的各个位置的值
            var gew = i % 10
            var shiw = parseInt(i / 10) % 10
            var baiw = parseInt(i / 100)

            /**
             *  3. 计算三个位置上各个数字的三次方之和
             * 
             *      **
             *          会得到 符号左边数字的 x 次幂
            */
            var sum = gew * gew * gew + shiw * shiw * shiw + baiw * baiw * baiw
            // var sum = gew ** 3 + shiw ** 3 + baiw ** 3

            // 4. 对比 是否等于自身
            if (sum === i) {
                console.log(i, '是一个水仙花数')
            }
        }