Javascript条件语句没有执行

时间:2016-01-27 19:40:53

标签: javascript conditional

我试图创建一个构建棋盘格的功能,但是我无法获得第二个条件语句来执行并创建一个新行。



function grid(size) {
  var board = "";
  for (i = 0; i <= (size * size); i++) {
    if (i % 2 === 0) {
      board += ' ';
    } else if (i % size === 0) {
      board += "\n";
    } else {
      board += '#';
    }
  }
  console.log(board);
}
grid(8);
&#13;
&#13;
&#13;

看来else if语句没有执行,因为我已尝试更改&#39; \ n&#39;和其他东西的条件,但没有打印。这个问题来自Eloquent Javascript,给出的解决方案是:

&#13;
&#13;
var size = 8;

var board = "";

for (var y = 0; y < size; y++) {
  for (var x = 0; x < size; x++) {
    if ((x + y) % 2 == 0)
      board += " ";
    else
      board += "#";
  }
  board += "\n";
}

console.log(board);
&#13;
&#13;
&#13;

我不确定为什么第二个有效但我的没有。

2 个答案:

答案 0 :(得分:2)

i % 2将始终执行,而不是i % (8 * 8)。您应该更换订单或从第二个else中删除if

答案 1 :(得分:2)

让我们分析您的代码:

 if(i % size === 0)

这意味着,当i等于0或是大小的倍数时。在你的情况下,大小是8。

因此,对于你的触发器,我应该是0,8,16,32 ......

在所有这些情况下,它永远不会触发,因为当我是0,8,16,32 ... i%2是0时,所以它将运行第一个if而不是第二个。您应该颠倒ifs的顺序或同时运行