当前位置: 代码迷 >> JavaScript >> 优雅javascript第2章练习3中的循环问题
  详细解决方案

优雅javascript第2章练习3中的循环问题

热度:67   发布时间:2023-06-12 13:51:12.0

这个问题来自上述来源,我被要求制作一个国际象棋棋盘。 提供的解决方案使用相同的方法,除了y <size和x <size。 但是为什么这种方式行不通呢?


var size = 8;
var chess = "";

for (var y = 0; y == size; y++){
    for (var x = 0; x == size; x++){

        if ((x + y) % 2 == 0)
            chess += " ";
        else
            chess += "#";

    }
    chess += "\n";    
}

console.log(chess);

-

您需要了解for循环的工作方式。 在阅读。

第二个子句是一个条件 ,每次通过循环(包括从头开始)都会进行检查。 如果为false ,则退出循环。 当它为true时,循环继续。 在您的情况下,您要一直循环直到xy达到板的大小(实际上,板的大小减去1,因为我们从0开始)。 因此,以下正确的:

for (var y = 0; y < size; y++) {
                ^^^^^^^^

如果你做了你所做的,然后说

for (var y = 0; y == size; y++){
                ^^^^^^^^^

那么循环根本不会执行 它将从x的零开始,然后检查它是否等于它的size ,而不是它的size0 !== 8 ),因此退出循环,甚至不执行一次。

由于xy值发生变化,因此for loops的条件应为<

这应该工作:

var size = 8;
var chess = "";

for (var y = 0; y < size; y++){

    for (var x = 0; x < size; x++){

        if ((x + y) % 2 == 0)
            chess += " ";
        else
            chess += "#";
    }

    chess += "\n";    
}

console.log(chess);
  相关解决方案