for (var i = 1; i <= 9; i++ ) { //this is the outer loop
document.write("<tr>");
document.write("<td>" + i + "</td>");
for ( var j = 2; j <= 9; j++ ) { // This is the inner loop
document.write("<td>" + i * j + "</td>");
}
document.write("</tr>");
}
document.write("</table>");
任何人都可以解释像这样的内部for循环是如何工作的吗?
答案 0 :(得分:1)
首次进入外循环时,i = 1,并创建一行<tr>
以及第一个数据<td>
。
当进入内部循环时,它将j从2迭代到9,填充更多数据<td>
,并将迭代索引i
和j
相乘并输出结果。
当退出内循环时,它结束在内循环之前启动的行</tr>
。
现在 - 再次重复上述三个步骤,包括内循环,i从2,一直到9。
结果,你得到一个9x9的乘法表。
考虑以下曲目。黑线是外环,红线是内环。每次看到它时,都会在轨道上打印文本,并将i
和j
替换为相应的变量。
http://i.minus.com/ibzsxcxCnucqpP.png
在这个程序中,您必须运行黑色循环9次,并记住当您通过起始行时,将i
增加1. i
从1开始,然后再进入此跟踪。
并且,当你每次到达红色循环时,进入循环并经历该循环8次,将j
增加1,从2开始,然后每次在通过黑色循环后再次到达红色循环时,将j
重置为2.
结果,你将运行红色循环9 x 9 = 81次,每次进入红色循环时,你计算i*j
并输出它。
捕获量是:
i
永远不会改变,直到你退出红色循环。j
将重置为2.(for循环语句中的j = 2
部分)最后但同样重要的是,这个代码可能是生成乘法表的一种更优雅的方式。
for (var i = 1; i <= 9; i++ ) { //this is the outer loop
document.write("<tr>");
for ( var j = 1; j <= 9; j++ ) { // This is the inner loop
document.write("<td>" + i * j + "</td>");
}
document.write("</tr>");
}