循环:loop
当需要反复的,重复的执行某些代码的时候,就需要使用循环了。
while、do-while、for
while 循环
语法:
while(循环条件){ //循环体 }
解释:
while:关键字
循环条件:布尔表达式,返回一个布尔值。如果不能返回一个布尔值,
那么就需要隐式转换。
大括号中是需要反复执行的代码块。
执行过程:
1:先判断循环条件,如果是true,那么就执行循环体。然后执行完循环体,再继续判断循环条件
成立,继续执行循环体,直到循环条件为false,那么立即结束循环。
2:如果一开始循环条件就是false,那么循环体一次都不执行。
注意:
1:如果循环体就一句代码,那么可以省略大括号。
2: 千万不要在循环条件后添加 ; 号。如果加了,循环体就是分号了。
循环结构的构成:
1:循环控制部分
a:循环条件初始化
b:循环条件
c:迭代(改变循环条件部分)
2:循环体
<script>
//打印100个 helloworld。
/*var counter = 0;
while(counter < 500){
console.log ("helloworld!");
counter ++;
}
counter = 0;
while(counter++ < 500)
console.log ("helloworld!");*/
//1-100的累加和
var sum = 0;//累加和变量
var num = 0;//自变量 1--100
while (num < 100) {
num++;
sum += num;
}
console.log ("sum = " + sum);
//1--100的奇数的累加和
sum = 0;
num = 1;
while (num < 100) {
sum += num;
num += 2;
}
console.log ("sum = " + sum);
sum = 0;
num = 1;
while (num < 100) {
if (num % 2 != 0)
sum += num;
num++;
}
console.log ("sum = " + sum);
</script>
do-while循环
语法:
do{
//循环体
}while(循环条件);
while(循环条件){循环体}
执行过程:
1:先执行一次循环体。然后再进行条件的判断。
2:如果条件成立,继续执行循环体,周而复始。
3:直到循环条件为false,结束整个循环。
do-while的事情的情形:
如果循环条件的判断要依赖于一次循环的执行可以使用do-while
总结:while和do-while的区别
1:语法不同
2:while先进行条件的判断,然后在执行循环体。
3:do-while先执行循环体,然后再进行循环条件的判断。
4:【while有可能一次循环体都不执行。do-while至少执行一次循环】
<script>
//1-100的累加和
var sum = 0;
var num = 1;
do{
sum += num;
num ++;
}while(num < 101);
console.log ("sum = " + sum);
//1-100的偶数的累加和
var sum = 0;
var num = 2;
do{
sum += num;
num +=2;
}while(num < 101);
console.log ("sum = " + sum);
//
const MIN = 1;
const MAX = 101;
//先得到一个随机数
/*var ran = ~~(Math.random () * (MAX - MIN) + MIN);
while (!(ran % 5 === 0 && ran % 7 === 0)) {//ran是5和7的公倍数的条件
ran = ~~(Math.random () * (MAX - MIN) + MIN);
}
console.log ("ran = " + ran);*/
do{
var ran = ~~(Math.random () * (MAX - MIN) + MIN);
}while(!(ran % 5 === 0 && ran % 7 === 0));
console.log ("ran = " + ran);
</script>
for循环
语法:
for(循环条件初始化; 循环条件 ; 迭代){ 循环体 }
执行过程:
1:循环条件初始化:执行且仅执行一次。最先被执行。
2:进行循环条件的判断。成立,执行循环体,然后执行 迭代部分。
然后再进行条件的判断,循环体,迭代,周而复始。直到循环条件为false
立即结束循环。
注意:
1:初始化部分可以同时初始化多个变量,迭代部分,可以同时迭代多个变量。循环条件只要返回一个布尔值即可。
2:for循环的小括号内使用2个分号分隔成了3部分。这三部分的内容都可以没有,但是2个分号是必不可少的。
3: 如果循环条件不写,意味着循环条件永远为真。
<script>
//1--100的累加和
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log ("sum = " + sum);
//1--100偶数累加和
/* var sum = 0;
for (var i = 2; i <= 100; i += 2) {
sum += i;
}
console.log ("sum = " + sum);*/
//三部分比较特殊的情况
/*for (var i = 0, j = 0, k = 0; i < 100 && j < 100 && k < 100; i++, j += 2, k += 3) {
}*/
/*var sum = 0;
var num = 1;
for(;num < 100;){
sum += num;
num ++;
}*/
//男程序员给女程序员的表白
/* for (var i = 0; i < 10000; i++) {
console.log ("I Love U");
}
for (;;){
console.log ("I Love U Too");
}*/
</script>
循环的选择:
1:如果循环的次数是固定的,通常使用for
2:如果循环的次数不固定,通常使用while
break:中断的意思。
语法: break;
1:js 的关键字
2:break 只能在 switch 中 和 循环体中使用。
3:在swtich中,用来结束switch语句的。
4:在循环体中使用,用来结束当前循环的。只能结束一层。
<script>
//使用while 和 for 实现1--100的累加和使用 break 实现
/*var sum = 0;
var num = 1;
while (true) {
sum += num;
//当num为100 就可以结束循环了
if (num === 100) break;
num++;
}
console.log ("sum = " + sum);*/
var sum = 0;
for (var i = 1; ; i++) {
sum += i;
if (i === 100) break;
}
console.log ("sum = " + sum);
</script>
continue:继续的意思
1: js的一个关键字。
2:只能在循环体中使用。
3:作用:用来跳过本次循环,继续下次循环。
4:while、do-while的循环体中使用continue。continue后续循环体中的代码将被跳过,去到下次循环条件的判断处去执行。
5:for 循环体中使用,会跳过continue 后续的代码,跳到迭代处去执行。
<script>
//1--100的奇数的累加和
var sum = 0;
var num = 0;
while (num < 100) {
num++;
//当num是偶数的时候执行continue。就直接跳转到了循环条件判断处去执行了。
if (num % 2 === 0)
continue;
//偶数的时候,下面的代码被跳过。
sum += num;
}
console.log (sum);
</script>
单分支if
双分支 if-else
多分支 等等
有嵌套的需求:
那么嵌套的深度不要太深,不建议超过3层。
循环的嵌套:循环体中包含了其他的循环。
嵌套循环的特点:
1:外层循环迭代一次,内层循环执行一遍。
2:内层循环体执行的次数 等于 ,每一层循环执行的次数的乘积。
关于使用率:
单层循环使用最多。双层的使用一般般。三层很少使用。
九九乘法表练习
//外层循环控制行数。i还要参与乘法运算。第二个操作数。
for (var i = 1; i <= 9; i++) {
//内层循环控制第i行的n列的打印
for (var j = 1; j <=i ; j++) {
var num = j * i;
document.write(${j}*${i}=${num};
)
}
document.write("
");
}