我正在开发一个实施Conway生命游戏的React项目,其中包含以下代码
for (let i = 0; i < this.rows; i++) {
for (let j = 0; j < this.cols; j++) {
let count = 0;
if (i > 0)
if (g1[i - 1][j]) count++;
if (i > 0 && j > 0)
if (g1[i - 1][j - 1]) count++;
if (i > 0 && j < this.cols - 1)
if (g1[i - 1][j + 1]) count++;
.......
并且之后的许多行与上面的格式类似,该函数应该计算单元格在30 * 50网格中的邻居数量。上面的代码工作正常,但是当我尝试类似下面的代码时,程序不起作用。
for (let i = 0; i < this.rows; i++) {
for (let j = 0; j < this.cols; j++) {
let count = 0;
if(i>0){
if(g1[i-1][j]){
count++
}
}
if(i>0 && j >0){
if(g1[i-1][j-1]){
count++
}
}
}
}
我认为这是因为第二个声明的效率远低于前一个声明?或者我完全错过了第二个问题吗?两种不同的if方法之间是否有任何具体差异?您是否可以在ES6中使用没有{}的if语句?
答案 0 :(得分:0)
两个代码块几乎相同。在JS中,如果你不使用大括号来包装你的if语句,那么如果条件为真,它将执行下一行(并且只执行下一行) - 然后转移到其余代码。
if( 3+2 == 5 ){
console.log( 'test - 1' );
}
if( 3+2 == 5 )
console.log( 'test - 2' );
if( 10 > 7 )
if( 7 < 14 ) console.log( 'test - 3' );
if( 10 > 7 ){
if( 7 < 14 ){
console.log( 'test - 4' );
}
}
if( 3*7 === 14 )
console.log( 'test - 5' ); // should not run
console.log( 'test - 6' ); // this should run
&#13;
答案 1 :(得分:0)
function testIt(){
a = 5; b = 6; c = 0; d = 0;
if(b>a)
if(a<b) c++; d++;
d++;
if(b<a)
if(a<b) c++; d++;
d++;
if(b>a)
if(a>b) c++; d++;
d++;
console.log(d === 6);
}
&GT;真
就像那样丑陋,无论条件如何,d ++总是会执行。如果你试图手动修改一堆看起来像这样的代码,你可能想要拆分它并逐个测试它们。
也许如果没有破产,请不要修理它?