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

时间:2015-07-16 23:44:34

标签: javascript

这个问题来自上述来源,其中我要求制作国际象棋棋盘。所提供的解决方案使用相同的方法,除了y <1。尺寸和x <尺寸。但为什么这种方式不起作用?

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);

-

2 个答案:

答案 0 :(得分:2)

您需要了解for循环的工作原理。请在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for处阅读。

第二个子句是条件,每次循环都会检查,包括在最开始。如果它是 false ,则退出循环。循环在 true 时继续。在您的情况下,您希望保持循环,直到xy达到电路板的大小(实际上,电路板的大小减去1,因为我们从0开始)。因此,以下 正确无误:

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

如果你做了你做的事,并说

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

然后循环永远不会执行。它将以x为零开始,然后检查它是否等于它不是size的{​​{1}},因此在没有执行一次的情况下退出循环。< / p>

答案 1 :(得分:1)

由于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);