【问题标题】:Confusing for loop results [duplicate]令人困惑的循环结果[重复]
【发布时间】:2014-03-30 04:08:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript for-loop


    【解决方案1】:

    尝试查看ij 的值,您会发现当循环结束时它们都为19,即使停止循环的条件恰好是j

    打开您的调试器并运行以下命令

    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】:

      您想使用 && 而不是逗号运算符。我添加了更多的 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 循环的原始版本中,将逗号分隔的条件与 && 分隔的条件进行比较:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-30
        • 1970-01-01
        相关资源
        最近更新 更多