● 循环管制,控制程序反复执行若干次雷同或似的逻辑,了解并正确应用循环管制,须要搞清楚循环的3个因素:起始值、变动量、终止条件。

○ 起始值循环的终点,能够是【任意数据类型值】

○ 变动量是指【扭转起始值的形式】

○ 终止条件【布尔类型值】,它是循环进行的边界

while 循环
● while,中文叫 当…时,其实就是当条件满足时就执行代码,一旦不满足了就不执行了

● 语法 :

○ while (条件) { 满足条件就执行 }

● 因为满足条件就执行,所以咱们写的时候肯定要留神,就是设定一个边界值,不然就始终循环上来了

// 1. 初始值(初始化条件)var num = 0;// 2. 终止条件while (num < 10) {    // 3. 要执行的代码    console.log('以后的 num 的值是 ' + num)    // 4. 变动量    num = num + 1}

案例1: 输入1 ~~100之间的所有偶数

// 起始条件var n = 1    // 终止条件while (n <= 100) {    // 逻辑代码    if (n % 2 === 0) {        console.log(n);    }    // 变动量    n++}

案例2: 求 1 ~ 100 以内所有 3 的倍数的和

// 求 1 ~ 100 以内所有 3 的倍数的和// 申明一个变量用于接管和var sum = 0// 初始值var num = 1    // 终止条件while (num <= 100) {    if (num % 3 === 0) {        sum += num    }    // 变动量    num++}console.log(sum);

案例3: 求三次自幂数(水仙花数)
● 自幂数是指一个三位数,它的每个位上的数字的三次幂之和等于它自身

● 例如 : 153

○ 三个位上别离是 1 和 5 和 3

○ 三次幂只和就是 1的三次方 + 5的三次方 + 3的三次方

○ 后果是 153 和原始数字一样

○ 153 就是一个三次自幂数

// 求三次自幂数// 初始值var m = 100// 终止条件while (m <= 999) {    // 获取百位数    var a = parseInt(m / 100)    // 获取10位数    var b = parseInt(m % 100 / 10)    // 获取个位数    var c = m % 10    // 求个十百三位数的3次幂的和    var res = a ** 3 + b ** 3 + c ** 3    if (res === m) {        console.log(m + '是三次自幂数');    }    // 变动量    m++}

do while 循环
● 是一个和 while 循环相似的循环

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

● 然而 do while 循环是,先不论条件,先执行一回,而后在开始进行条件判断

● 语法:

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

// 定义一个变量var n = 1// 设定咱们的循环条件,n要小于等于3while (n <= 3) {    console.log('我执行了' + n + '次');    // 这里咱们要让咱们的变量向着咱们设定的值后退    n = n + 1

● do while 和 while 循环的区别

/*while 循环和do while循环的区别    => 通过比照咱们发现,do while循环不论条件是不是满足都会执行一次    => while 循环在条件不满足的状况下一次都不执行    => 因为while是先判断条件后执行代码,如果条件不满足就一次也不执行了    => 也就说 在条件都满足的状况下 while循环和do while循环是一样的    => 在条件不满足的状况的下do while循环要比while循环多执行一次        -> 因为do while循环是先执行后判断        -> while 循环是先判断后执行*/// do while 循环// 定义一个其实变量var n = 10do {    console.log('我执行了一次');    n++} while (n <= 3)// while循环while (n <= 3) {    console.log('我执行了一次');    n++}

案例1: 求 1 ~ 100 以内所有整数的和

// 定义咱们的初始值var num = 1// 咱们要求和,须要须要定义一个变量接管咱们最初的后果var sum = 0do {    // 计算咱们的后果    sum += num    // 让咱们的初始值执行++操作    num++} while (num <= 100) // 设定咱们的完结条件// 打印一下咱们的后果console.log(sum);

for 循环
● 和 while 和 do while 循环都不太一样的一种循环构造

● 情理是和其余两种一样的,都是循环执行代码的

● 语法:

○ for (初始值; 完结条件; 变动量) { 要执行的代码 }

○ for (var i = 0; i < 10; i++) { 要执行的代码 }

// 把初始值,终止条件,变动量,写在了一起for (var i = 1; i <= 10; i++) {    // 这里写的是要执行的代码    console.log(i)}// 控制台会顺次输入 1 ~ 10

案例1: 求 1 ~ 100 以内所有 3 的倍数的和

// 求 1 ~ 100 以内所有 3 的倍数的 和// 申明一个变量用于接管和var sum = 0// i = 1  初始值// i <= 100 终止条件// i++  变动量for (var i = 1; i <= 100; i++) {    if (i % 3 === 0) {        sum += i    }}

案例2: 求1000 ~ 2000 之间所有的平年

// 求1000 ~ 2000 之间所有的平年// 公历平年的简略计算方法  1.能被4整除而不能被100整除。2.能被400整除。// 开始循环for (var i = 1000; i <= 2000; i = i + 4) {    //判断是不是平年    if (i % 4 === 0 && i % 100 !== 0 || i % 400 === 0) {        console.log(i + '是平年');    }}

案例3: 求两个数字的最大公约数

// 求两个数字的最大公约数// 公约数:能同时被两个数整除的数就是公约数// 申明两个数var min = 12var max = 30// 定一个变量用于接管公约数var res = 1 // 公约数最小是1for (var i = 1; i <= min; i++) { // 终止条件是最小的那个数字    if (min % i === 0 && max % i === 0) {        console.log(i);    }}

循环管制语句
break 终止循环
● 在循环没有进行结束的时候,因为我设置的条件已满足,提前终止整个循环,不会再有下一次循环

● 比方:

○ 我要吃五个包子

○ 吃到三个的时候

○ 不能在吃了

○ 我就进行吃包子这个事件

● 要终止循环,就能够间接应用 break 关键字

for (var i = 1; i <= 5; i++) {    // 每循环一次,吃一个包子    console.log('我吃了一个包子')    // 当 i 的值为 3 的时候,条件为 true,执行 {} 外面的代码终止循环    // 循环就不会持续向下执行了,也就没有 4 和 5 了    if (i === 3) {        break    }}

continue 完结本次循环
● 在循环中,把循环的本次跳过去,继续执行后续的循环,也就是完结本次循环,间接进入下次循环

● 比方:

○ 吃五个包子

○ 到第三个的时候

○ 第三个掉公开了,不吃了

○ 跳过第三个

○ 持续吃第四个和第五个

● 跳过循环的本次,就能够应用 continue 关键字

for (var i = 1; i <= 5; i++) {    // 当 i 的值为 3 的时候,执行 {} 外面的代码    // {} 外面有 continue,那么本次循环前面的代码就都不执行了    // 主动算作 i 为 3 的这一次完结了,去继续执行 i = 4 的那次循环了    if (i === 3) {        console.log('这个是第三女朋友')        continue    }    console.log('我的女朋友')}

案例1: 求最大公约数

// 最大公约数// 找最大的xxx数字, 从大向小循环最好var res = 1// 申明两个变量var min = 12var max = 24// 开始循环, 从大向小循环for (var i = min; i >= 1; i--) {    // 判断是否是公约数    if (min % i === 0 && max % i === 0) {        // 把i的值赋值给 res        res = i        // 只有找到一个公约数, 就必定是最大公约数。能够间接完结循环了        break    }}// 循环完结console.log(min + ' 和 ' + max + ' 的最大公约数是 : ' + res)

案例2: 最小公倍数

// 最小公倍数// 因为是找 最小xxx的数字, 所以从小向大循环最好var res = 0var min = 10var max = 15// 从小到大循环for (var i = max; i <= min * max; i += max) {    // 只有判断还是 min 的倍数    if (i % min === 0) {        console.log('公倍数是 : ' + i)        // 给 res 赋值        res = i        // 找到的第一个公倍数就是最小公倍数        // 间接完结循环了        break    }}

循环嵌套
● 利用循环的常识来比照一个简略的地理常识,咱们晓得地球在自转的同时也在围绕太阳公转,如果把自转和公转都看成是循环的话,就相当于是循环中又嵌套了另一个循环。

● 实际上 JavaScript 中任何一种循环语句都反对循环的嵌套,如下代码所示:

for (var i = 1; i <= 3; i++) {    // 在一个循环内, 再次书写一个循环    for (var j = 1; j <= 3; j++) {        console.log('i 是 ' + i + ' , j 是 ' + j)    }}

○ 外层的循环每执行1次,外部循环执行 3 次,而后外层反复下一次循环...

○ 留神:外层循环和内层循环不能应用同一个变量

案例1: 在页面上应用 (☆) 呈现一个正方形

// 剖析:// 呈现一个☆// document.write('☆')// 要呈现9个,是不是要执行同样的代码9次,是不是能够用到循环// for (var i = 0; i <= 9; i++) {//     document.write('☆ ')// }// 管制行数for (var j = 1; j <= 9; j++) {    // 管制列数    for (var i = 1; i <= 9; i++) {        document.write('☆ ')    }    // 为了呈现正方形须要换行    document.write('</br>')}

案例2: 在页面上应用 (☆) 呈现一个三角形

// 管制行数for (var j = 1; j <= 9; j++) {    // 管制列数    for (var i = 1; i <= j; i++) {        document.write('☆ ')    }    // 为了呈现正方形须要换行    document.write('</br>')}

案例3: 在页面上应用 (☆) 呈现一个倒三角形

// 管制行数for (var j = 1; j <= 9; j++) {    // 管制列数    for (var i = j; i <= 9; i++) {        document.write('☆ ')    }    // 为了呈现正方形须要换行    document.write('</br>')}

案例4: 页面上打印出九九乘法表

// 管制行数for (var j = 1; j <= 9; j++) {    // 管制列数    for (var i = 1; i <= j; i++) {        document.write(i + '*' + j + '=' + j * i)    }    // 为了呈现正方形须要换行    document.write('</br>')}