1、while循环
while循环:1 先判断循环条件 2 假如条件为真,则执行循环体后继续回到1,假如条件为假,整个while结束
- 打印1-100
var i = 1; //i代表一个数
while(i<=100) {
//打印i
console.log(i);
i++;
}
- 页面上输出10个*每一次输出一个
var i = 1; //i表示次数
var str = "";
while(i<=10) {
str += "*";
i++;
}
console.log(str);
- 输出1-100之间所有能被3整除又能被8整除的数
// 不断拿一个数进行判断
var i = 1;
while(i<=100) {
// 对i进行判断
if (i%3==0 && i%8==0) {
console.log(i);
}
i++;// ++i i=i+1 i+=1
}
- 求和 0+1+2+3+…+100
// 1 定义一个变量sum存储和
var sum = 0;
// 2 定义一个变量表示加数
var i = 1;
while(i<=100) {
sum = sum + i;
i++;
}
console.log("sum="+sum);
2、do…while循环
do-while:先执行循环体,判断条件,假如条件为真,则继续执行循环体,直到条件为假do-while循环结束
while的循环体可能一次也不执行 do-while循环体至少执行一次
- 输出1 2 3 4 5
var i = 1;
var str = "";
do {
// 重复的语句-----循环体
str += i + " ";
i++;
} while(i<=5);
console.log(str);
3、for循环
for(表达式1;表达式2;表达式3) { 循环体 }
表达式1:变量初始化;表达式2:循环条件;表达式3:循环变量改变
执行流程: 执行表1 -> 执行表2,表2为假 for循环结束 表2为真执行表3 -> 执行循环体 -> 执行表3 再回到第2步
- 输出:1 2 3 4 5 6 7 8 9 10
var str = "";
for(var i = 1; i<=10; i++) {
//循环体
str += i+" ";
}
console.log(str);
var i = 1;
var strj = "";
for(; i<=10; ) {
//循环体
strj += i+" ";
i++;
}
console.log(strj);
- 死循环
for(;;) {
console.log(1);
}
4、循环总结
while|do-while|for:本质都是重复执行语句
while 一般只知道条件,不知道具体的循环次数情况下
do-while 希望有的代码一开始就执行一次
for循环一般用于循环次数固定的情况
5、循环应用-水仙花数
三位数 水仙花数 每个位的数的立方和等于它本身
// 思路 每次拿一个三位数 得到个位 十位 百位 求立方和 判断是否和自己相等
for(var i=100; i<=999; i++) {
// 定义三个变量 分别存储个 十 百位上的数
var dig = i%10;// 234%10
var ten = parseInt(i/10)%10 // 234/10-----> 23.4取整----->23%10--->3
var hund = parseInt(i/100);
// 对三个数的立方和与自己比较
if (Math.pow(dig,3) + Math.pow(ten,3) + Math.pow(hund,3) === i) {
document.write(i+"是水仙花数<br>");
}
}
6、循环应用-阶乘
- 求5! 1 * 1 * 2 * 3 * 4 * 5
var sum = 1; // 初始化值为1
for(var i=1; i<=5; i++) {
sum = sum * i;
}
console.log(sum);//120
- 阶乘和 1!+2!+3!+4!+5! 1!+ 1!*2 + 2!*3+3!*4+4!*5
var fac = 1;// 求任意一个数的阶乘
var sum = 0;
for(var i=1; i<=5; i++) {
fac = fac * i;
sum = sum + fac;
}
console.log(sum);
- 1-1/2+1/3-1/4+…1/100求和
var sum = 0;
for(var i=1; i<=100; i++) {
if(i%2) {
sum += 1/i;
} else {
sum += (-1)/i;
}
}
console.log(sum);
7、break
break一般用于循环或switch结构,break只要执行,循环立即结束
var i = 1;
while(i<8) {
console.log(i);
i++;
if(i==5) {
break; // break只要执行 循环立即结束
}
} // 1 2 3 4
console.log("==break==:"+i);
8、continue
continue只用于循环,作用:结束本次循环后面的逻辑,继续下次循环
var i = 1;
while(i<8) {
console.log(i);
i++;
if(i==5) {
continue; // 本次循环结束(假如后面有代码不执行) 继续下一次
}
console.log("ok");
} // 1 2 3 4 5 6 7
console.log("==continue==:"+i);
9、循环嵌套
打印图形 其实就是打印若干行 每行打印若干个*
var lines = parseInt(prompt("请输入打印的行数"));
var stars = parseInt(prompt("请输入每行星星数"));
// 定义一个循环控制行数
for(var i=1; i<=lines; i++) {
// 每行打印若干个*
for(var j=1; j<=stars; j++) {
document.write("*");
}
// 换行
document.write("<br>");
}
打印图形 其实就是打印若干行 每行输出若干个空格和若干个*
行数 | 空格数 | *数 |
---|---|---|
i=0 | 4 | 1 |
i=1 | 3 | 3 |
i=2 | 2 | 5 |
i=3 | 1 | 2*i+1 |
// 定义一个循环 控制行数
for(var i=0; i<=4; i++) {
// 首先打印若干个(4-i)空格
for(var j=0; j<4-i; j++) {
document.write(" ");
}
// 再打印若干个*(2*i+1)
for(var k=0; k<2*i+1; k++) {
document.write("*");
}
// 换行
document.write("<br/>");
}