javascript连续if()if()语句和嵌套if语句

时间:2018-03-11 02:00:52

标签: javascript reactjs if-statement

我正在开发一个实施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语句?

2 个答案:

答案 0 :(得分:0)

两个代码块几乎相同。在JS中,如果你不使用大括号来包装你的if语句,那么如果条件为真,它将执行下一行(并且只执行下一行) - 然后转移到其余代码。

&#13;
&#13;
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;
&#13;
&#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 ++总是会执行。如果你试图手动修改一堆看起来像这样的代码,你可能想要拆分它并逐个测试它们。

也许如果没有破产,请不要修理它?