AS3 还是搞不懂FOR语句

来源:百度知道 编辑:UC知道 时间:2024/07/16 07:20:59
for (var i:uint = 1; i<=9; i++)
{
for (var j:uint = 1; j<=i ; j++)
{
trace(i+"*"+j+"="+i*j)

}
}
这是可以输出99乘法表的代码

输出结果如下:
1*1=1
2*1=2
2*2=4
3*1=3
3*2=6
3*3=9
4*1=4
4*2=8
4*3=12
4*4=16
...(以下省略)

但是我觉得输出的应该是:
1*1=1
2*2=4
3*3=9
...
为什么。。?
是啊,我认为里面的FOR循环只能循环一次。。为什么?J+1>i了,所以会跳出循环?

最里面那个for循环完整执行一圈后,外面的i才自增1,也就是i++ ,i和j不是一起变的

最简单的办法是你把i和j一个个取值带进去算下酒知道了
解释的话,比如for(var i:uint = 1; i<=9; i++)意思是进入循环时,i的初值是1,当满足i<=9时就一直循环下去,每循环一次i就自增1
那比如程序刚运行时,
i=1,j=1,trace的结果是1*1=1
然后j自增1,变成了2,然后判断j<=i吗?当然不成立了,所以跳出里面的for循环,继续第二遍外层的for循环,i也自增1.
那在进行第二轮循环前i已经是2,j也是2.
但是当第二遍循环开始后,进入里面的for循环时,这个里面的for循环是重新开始计算初值的,所以j又变成了1.但i不变,依然是2,所以根据里面for循环的条件j<=i 那当然里面的for循环要执行2次了,结果你算下就明白了