接上章:
作用 : 代码重复执行
while(条件 true/false ){循环体:需要重复执行的代码}
/* 需求:打印三次 【前端知识点总结】JavaScript 基础三 */ //复制粘贴弊端:(1)代码冗余 (2)维护不便 // console.log('【前端知识点总结】JavaScript 基础三') // console.log('【前端知识点总结】JavaScript 基础三') // console.log('【前端知识点总结】JavaScript 基础三') //(1)声明一个变量记录循环次数 : 循环变量 let num = 1 //(2)循环条件:控制循环执行的条件 while (num<=3) { console.log('【前端知识点总结】JavaScript 基础三') //(3)循环变量自增 num++ } console.log('【前端知识点总结】JavaScript 基础三学完了')
for((语句1 :声明循环变量) ; (语句2:循环条件) ; (语句3: 循环变量自增)){循环体}
/* 需求:打印三次 【前端知识点总结】JavaScript 基础三 */ for (let i = 1; i <= 3; i++) { console.log('【前端知识点总结】JavaScript 基础三 ') }
for 循环: 循环次数明确的
案例1: 打印100-200之间每一个整数
for (let i = 100; i <= 200; i++) { console.log(i) }
案例2 : 打印1-100之间可以被7整除的数(求指定范围满足条件的数)
for (let i = 1; i <= 100; i++) { if (i % 7 == 0) { console.log(i) } }
//(1)声明变量存储累加和结果 let sum1 = 0 //(2)遍历数量 for (let i = 1; i <= 5; i++) { let num = +prompt(`请输入第${i}数字`) console.log(num) //(3)累加 sum1 += num }
let max = -Infinity
let max = Infinity
案例: 用户输入5个数字,求5个数字最大数
/* 求最大值思路(擂台思想) */ //1.声明变量存储结果 //求最大值:保证第一个数字一定比默认值大,所以默认值给 -Infinity let max = -Infinity //2.遍历数量 for (let i = 1; i <= 5; i++) { let num = +prompt(`请输入第${i}个数字`) //3.依次比较大小 if (num > max) { max = num } } console.log(max) //求最小值:保证第一个数字一定比默认值小,所以默认值给 Infinity let min = Infinity //2.遍历数量 for (let i = 1; i <= 5; i++) { let num = +prompt(`请输入第${i}个数字`) //3.依次比较大小 if (num < min) { min = num } } console.log(min)
while 循环:循环次数不明确(实际业务中很少使用)
let num = 0 while (true) { //无限循环,不知道走多少次 num++ if (num % 3 == 1 && num % 4 == 2 && num % 5 == 3) { console.log(num) break } }
// 1-100随机整数 let num = parseInt(Math.random() * 100) //(1)人为的写一个死循环 while(true){ let cai = +prompt('请猜出这个幸运数字是多少?') if( cai > num ){ alert('猜大了继续') }else if( cai < num ){ alert('猜小了继续') }else{ alert('恭喜你猜对了') //(2)使用break主动结束循环 break } }
Math.random()
parseInt( Math.random() * 100 )
break
只对循环和switch-case
有效//早上吃10个小笼包,一口一个,吃10次 for (let i = 1; i <= 10; i++) { //break:吃到第五个包子吃饱了,后面的包子都不吃了。整个循环结束,立即执行循环后面的代码 if (i == 5) { break } //continue:吃到第五个包子,吃到虫子了。第五个包子不吃,但是没吃饱后面包子继续吃。 //结束本次循环体,立即进入下一次循环判断 if( i == 5){ continue } console.log(`我正在吃第${i}个包子`) } console.log('我吃完了')
循环内部 嵌套循环
//循环三天 for (let i = 1; i <= 3; i++) {//i = 1 2 3 console.log(`第${i}天开始了`) //循环5个单词 for(let j = 1;j<=5;j++){//j = 1 2 3 4 5 console.log(`第${j}个单词`) } console.log(`第${i}天结束了`) }
for(let i = 1;i<=6;i++)
//1.外层循环:行 for (let i = 1; i <= 6; i++) { //2.内层循环:列数 = i的值 for (let j = 1; j <= i; j++) { document.write('☆ ') } document.write('<br>') }
//(1)外层循环:行 for (let i = 1; i <= 9; i++) { //(2)内层循环 = 当前行 for (let j = 1; j <= i; j++) { document.write(`<span> ${j}x${i}=${i*j} </span>`) } document.write('<br>') }
for (let i = 0; i <= 50; i++) { for (let j = 0; j <= 100; j++) { for (let k = 0; k <= 100; k++) { if (i + j + k == 100 && i * 2 + j + k * 0.5 == 100) { console.log(`大马:${i},中马:${j},小马:${k}`) } } } }