2016-01-27 43 views
1

我试图做一个函数,建立一个检查板但是我无法让我的第二个条件语句执行并创建一个新行。JavaScript条件语句不执行

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

看来else if语句可没有执行,因为我试图改变“\ n”和条件,其他的东西,但打印什么。这个问题是从雄辩Javascript和给出的解决方案是这样的:

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

我不知道为什么第二个工作,但我的不会。

回答

2

Let's分析代码:

if(i % size === 0) 

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

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

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

+0

不可以。不可以。你最终得到7×8板。其他如果应该是一个单独的,如果在循环的头部 –

+0

@JaromandaX是真的,运行两者可能更好,虽然没有尝试过 – juvian

2

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