?
? ? ? ?最近刚学习js,遇到了 for 循环嵌套的问题,经过多加练习终于弄懂了,在此和大家分享一下,但在学习 for 的嵌套及其输出前,我们先学习一下 for 循环的运行规则吧。
?
?1. for循环的运行规则:
?1.1 规则的解释
for (1初始化表达式;2条件表达式;3更新表达式)
{
4循环体函
}
?执行顺序:1-2-4-3,1-2-4-3,...
1.2 规则的解释?? ? ? ? ??
for (1初始化表达式;2条件表达式;3更新表达式)
{
4循环体函数
}
? ??1.在for循环的第一个表达式中对循环变量‘i‘进行初始化;
? ? ? 2.在第二个表达式中判断循环变量‘i‘的值是否符合循环条件;
? ? ? 3.如果不符合条件,则循环结束;
? ? ? 4.如果符合条件,首先去执行for循环中的代码块,然后在第三个表达式中对循环变量进行更新。继续下一轮循环。?? ? ??
function score( ) { for(i=0;i<5;i++) { console,log(i); } }?上述例子的输出结果为:0 1 2 3 4 。
?
? 2. 本篇文章主要讲述的是对 js 中 for 的嵌套及其输出的分析
?
2.1? 嵌套的分析?
1号程序 function score() { for(i=0;i<5;i++) { for(j=0;j<5;j++) { console.log(i + ‘ ‘); } console.log(‘\n‘); } } 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 2号程序 function score( ) { for(i=0;i<5;i++) { for(j=0;j<i;j++) { console.log(i + ‘ ‘); } console.log(‘\n‘); } } 1 2 2 3 3 3 4 4 4 4
?
?
? 通过对比1号和2号程序,其区别是 j 的取值范围,即:j<5 与 j<i。
?
?? 当?j<5 时:
? ? ? ? ?执行 i=0,满足 i<5 后,for(j=0;j<5;j++) 中的 j 会执行 5 次,
? ?因为 ? j=0,满足 j<i, 即 0<5。
? ? ? ? ?执行 i=1,满足 i<5 后,for(j=0;j<5;j++) 中的 j 会执行 5 次,
? ?因为 j=0,满足 j<i, 即 0<5。
? ? ? ? ?执行 i=2,满足 i<5 后,for(j=0;j<5;j++) 中的 j 会执行 5 次,
? ?因为 j=0,满足 j<i, 即 0<5。
? ? ? ? ?以此类推。
?? 当 j<i 时:
? ? ? ? ?执行 i=0,满足 i<5 后,for(j=0;j<i;j++) 中的 j 不会执行循环,
? ?因为 j=0,并不满足 j<i,即 0<0;
? ? ? ? ?执行 i=1,满足 i<5 后,for(j=0;j<i;j++) 中的 j 会执行 1 次,
? ?因为 j=0,满足 j<i, 即 0<1;
? ? ? ???执行 i=2,满足 i<5 后,for(j=0;j<i;j++) 中的 j 会执行 2 次,
? ? 因为 j=0,满足 j<i, 即 0<2;
? ? ? ? ?执行 i=3,满足 i<5 后,for(j=0;j<i;j++) 中的 j 会执行 3 次,
? ? 因为 j=0,满足 j<i, 即 0<3;
? ? ? ???执行 i=4,满足 i<5 后,for(j=0;j<i;j++) 中的 j 会执行 4 次,
? ? 因为 j=0,满足 j<i, 即 0<4。
?
? 2.2? 输出的分析
function score() { for(i=0;i<5;i++) { for(j=0;j<i;j++) { 无 1 console.log(i + ‘ ‘); 1号位置 //输出结果: 2 2 3 3 3 4 4 4 4 } console.log(i + ‘ ‘); 2号位置 //输出结果:0 1 2 3 4 } console.log(i + ‘ ‘); 3号位置 //输出结果: 5 }
??1号位置 ,输出结果的原因:输出受到 i,j 的制约。
? ?2号位置 ,输出结果的原因:输出只受到 i 的制约。
? ?3号位置 ,输出结果的原因:输出不受 j 的制约,当 i 等于 5 时,跳出 for 循环,执行输出,即:i = 5。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
原文:http://dingliang-321.iteye.com/blog/2177859