混淆循环结果

时间:2014-03-30 04:08:14

标签: javascript for-loop

我对这个for循环感到困惑:

for (var i=0,j=0;i<4,j<20;i++,j++) {
    a=i+j;
}
console.log(a);

为什么答案是38?在我运行它之前,我认为答案是6。

3 个答案:

答案 0 :(得分:0)

首先,这部分代码运行“i = 0,j = 0; i&lt; 4,j&lt; 20”,然后“a = i + j;”,然后i ++,j ++ 一旦,i <4,j <20就完成了。代码“console.log(a);”会跑。

我希望有帮助

答案 1 :(得分:0)

尝试查看ij的值,即使停止循环的条件恰好在j <上,您将看到它们在循环结束时都是19 / p>

打开调试器并运行以下

for(var i=0,j=0;i<4,j<20;i++,j++){ 
  ab=i+j; 
  console.log("i", i); 
  console.log("j",j); 
  console.log("a", a); 
}

答案 2 :(得分:0)

你想使用&amp;&amp;不是逗号运算符。我添加了更多的console.log步骤来显示中间步骤。

for(var i=0,j=0;i<4 && j<20;i++,j++){
  a=i+j; 

  console.log("a: "+a+ " i+j:" + (i+j))
}
console.log(a);

在for循环的原始版本中,将逗号分隔条件与&amp;&amp;和分开的条件:

for(var i=0,j=0;i<4,j<20;i++,j++){
   a=i+j;
   console.log("(i<4, j<20): " + (i<4, j<20))
   console.log("(i<4 && j<20): " + (i<4 && j<20))

 }
 console.log(a);