Javascript 这个for循环是如何制作8x8板的?

Javascript 这个for循环是如何制作8x8板的?,javascript,for-loop,Javascript,For Loop,我不明白第二个for循环如何覆盖x轴。 我开始阅读雄辩的javascript,这个问题作为练习给出。它提供了有关嵌套循环的简短信息,但没有提到这种复杂性。 我搜索了以前的答案,但没有得到有关这方面的信息。有什么帮助吗?考虑一下这个真值表,它显示了两个整数相加的偶数/奇数结果: { if ((x + y) % 2 == 0) board += " "; else board += "#"; } 因此,从位置(0,0)开始,内部循环将写入一个空格。考虑下一行,(0, 1)-内环

我不明白第二个for循环如何覆盖x轴。 我开始阅读雄辩的javascript,这个问题作为练习给出。它提供了有关嵌套循环的简短信息,但没有提到这种复杂性。
我搜索了以前的答案,但没有得到有关这方面的信息。有什么帮助吗?

考虑一下这个真值表,它显示了两个整数相加的偶数/奇数结果:

{
 if ((x + y) % 2 == 0)
    board += " ";
 else
    board += "#";
}
因此,从位置(0,0)开始,内部循环将写入一个空格。考虑下一行,(0, 1)-内环将写一个数字符号,因为<代码> 1 + 0 < /代码>的结果是奇数。无论当前的行或列是什么,整个电路板的模式都会继续


因此,您还可以判断任意板上的任何正方形是否为空或是否有数字符号

基本编程知识告诉我们,for循环只是一种将变量值调整一定次数的方法。在您的例子中,您基本上是从零开始“计数”,然后递增
y
,直到它大于大小

所以第二个,基本上是这个非常简单的概念,并对它进行了扩展。因此,对于每个
y
外循环的第次迭代
x
将从
0
开始,并转到
size-1

考虑以下修改后的代码示例:

|  X is even  |  Y is even  | X + Y is even | Write a space?
|     F       |      F      |      T        |      T 
|     T       |      F      |      F        |      F
|     F       |      T      |      F        |      F
|     T       |      T      |      T        |      T
通过这种方式,变量
x
y
似乎被恰当地命名。对于每行
y
x
将从
0
变为
size-1

希望这有意义

“观察”变量的变化可以让您更好地了解程序的工作原理:

var prog=[],
table=document.querySelector('table'),
sx=document.getElementById('x'),
sy=document.getElementById('y'),
smod=document.getElementById('mod');
功能显示(x、y、c){
推进([x,y,c]);
}
函数runProgram(){
var p=prog.shift();
如果(p){
变量x=p[0],y=p[1],c=p[2],mod=(x+y)%2;
innerHTML=x;
sy.innerHTML=y;
smod.innerHTML=mod;
table.rows[y].cells[x].innerHTML=c;
设置超时(运行程序,200);
}
}
变量大小=8;
var board=“”;
对于(变量y=0;y
th{
高度:20px;
宽度:20px;
边框:1px纯色灰色;
}
y=
x=
(x+y)%2=
你是对的。在每一步看到y和x可能会有所帮助。在(x,y)的循环中添加一个print语句,您将看到电路板是如何被覆盖的。我建议在循环之前设置一个断点,然后逐步完成代码。没有什么比实际通过流程更好的理解流程了。在这里学习如何设置断点:我很困惑。下一行应该是(0,1),对吗?代码是否以(0,0)、(0,1)、(0,2)…(0,7)或(0,0)、(1,0)、(2,0)…(7,0)的形式运行?我猜是前者,因为代码首先为循环运行第1行,然后为循环运行第2行,所以它应该是(0,0)、(0,1)、(0,2)…(0,7),然后是(1,0)、(1,1)、(1,2)…(1,7)等等。您是对的,“下一行”将从(0,1)开始,因此它遵循后一种情况。如果将内环体更改为
board+=”(“+x+”,“+y+”),则可以看到结果是,这很有意义。你说的(尺寸*y+x)是什么意思?是(y+x尺寸)还是(y+x尺寸)?程序将运行(大小*y)+x,我想您指的是后者。:)@海洋生物学家你应该仔细阅读运算符优先级-这些规则决定表达式的求值顺序。在本例中,Javascript使用与代数相同的规则,因此乘法发生在加法之前。
|  X is even  |  Y is even  | X + Y is even | Write a space?
|     F       |      F      |      T        |      T 
|     T       |      F      |      F        |      F
|     F       |      T      |      F        |      F
|     T       |      T      |      T        |      T
for (var y = 0; y < size; y++) {
    for (var x = 0; x < size; x++) {
        board += " " + (size * y + x);
    }
    board += "\n";
}
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63