认识for循环:循环语句就是执行一些类似的代码,让这些代码的编写变得简化。
语法:
for(表达式1; 表达式2; 表达式3){
循环体;
}
执行过程:先执行一次表达式1,然后判断表达式2;如果不成立则直接跳出循环;如果表达式2成立,执行循环体的代码,结束后跳到表达式3执行,然后跳到表达式2,判断表达式2是否成立,不成立则跳出循环。如果表达式2成立,则执行循环体,然后跳到表达式3,再跳到表达式2,判断是否成立,一直如此。
在控制台输出1~100:
<script type="text/javascript">
for(var i=1; i<=100; i++){
console.log(i);
}
</script>
补充:i++等价于i=i+1,即i自增1
也就是说
for(var i=1; i<=100; i++)
等价于
for(var i=1; i<=100; i=i+1)
准确遍历for循环:即分析程序的运行、走向。
<script type="text/javascript">
for(var i = 1 ; i < 13 ; i = i + 4){
console.log(i);
}
</script>
控制台输出1,5,9.
遍历以上代码:
程序一运行,将执行var i = 1;这条语句, 所以i的值是1。 然后程序会验证i < 13是否满足,1<13是真,所以执行一次循环体(就是大括号里的语句)。执行完循环体之后,会执行i=i+4这条语句,所以i的值是5。
然后程序会验证i < 13是否满足,5<13是真,所以执行一次循环体(就是大括号里的语句)。执行完循环体之后,会执行i=i+4这条语句,所以i的值是9。
然后程序会验证i < 13是否满足,9<13是真,所以执行一次循环体(就是大括号里面的语句)。执行完循环体之后,会执行i=i+4这条语句,所以i的值是13。
然后再程序会验证i < 13是否满足,13<13是假,所以不执行循环体了,退出循环。
例1:
for(var i=50; i<40;i++){
console.log(i);
}
什么也不输出,因为程序一开始i=50,不满足i<40,所以不会执行。
例2:
for(var i=1; i<10;i=i+3){
i=i+1;
console.log(i);
}
输出2,6,10。因为程序一开始i=1,所以进入循环体,i变为2,输出2。
然后执行i=i+3,所以i等于5,满足i<10,所以进入循环体,i变为6,输出6。
然后执行i=i+3,所以i等于9,满足i<10,所以进入循环体了, i变为10,输出10
然后执行i=i+3,所以i等于13了,不满足i<10,所以不执行循环体。
例3:
for(var i=1; i<=10;i++){
}
console.log(i);
输出11。程序一开始,i等于1,满足i<=10,进入循环体,但是循环体没有语句,不会输出。i++执行。 所以一直当i为10的时候,又执行了一次i++,此时i等于11。不满足i<=10了,退出循环,输出11。
例4:
for(var i=1; i<7;i=i+3){
}
console.log(i);
输出7。
例5:
<script type="text/javascript">
for(var i=1;i<10;i=i+1){
if(i%2==0){
i=i*2;
}
console.log(i);
}
</script>
输出1,4,5,12。
例6:
for(var i=1;i>0;i=i+1){
console.log(i);
}
一个死循环。
例7:
var i=3;
for(; i<10; i++){
console.log(i);
}
循环灵活,输出3,4,5,6,7,8,9。
例8:
for(var i=3; i<20; i=i+2){
if(i%3==2){
i=i+1;
}else{
i=i+2;
}
console.log(i);
}
输出的是5,9,12,15,18。