【问题标题】:Keeping a for loop variable after loop execution在循环执行后保留一个 for 循环变量
【发布时间】:2019-06-11 14:09:00
【问题描述】:

我试图在执行后保留一个 for 循环变量,因为条件将通过另一个 for 循环发生变化。这是我的例子:

l = 0;
for (var i = 0;i<5:i++){
    for(var l; l<l+i;l++){
    }
}

我的目标是在我离开 for 循环时记住 l 的值,并在新的条件下保留它以供下一次执行。我知道这含糊不清,但我们不胜感激。

【问题讨论】:

  • 只删除var l?或者提供更多关于如何重新运行的详细信息
  • 你期待什么结果?你试过访问变量吗?
  • 当你用var 声明变量时,你已经有了可以做你想做的事情的代码。
  • 这是l 还是1?通常,l 是一个非常糟糕的变量名称。
  • @spender:它甚至不会在不抛出错误的情况下执行(在 JS 中)。不能只使用数字命名变量,也不能以数字开头。

标签: javascript for-loop scope


【解决方案1】:

只需使用while 循环:

var l = 0;
for (var i = 0;i<5:i++){
    while(l < l+i) {
      // do stuff
      l++;
    }
    // Here you have the value of l when breaked out of the loop
}

【讨论】:

    【解决方案2】:

    您的代码已经按预期工作,var l 在外部范围内声明变量,以便您可以在循环外访问它。

    但是,您需要修正拼写错误 (:->;) 和无限循环(l&lt;l+i 对于正数 i 始终是正确的),我建议将 var变量第一次初始化的声明:

    var l = 0;
    for (var i=0; i<5; i++) {
        var end = l+i;
        for (; l<end; l++) {
            console.log(i, l);
        }
    }
    

    【讨论】:

      【解决方案3】:

      其他答案将起作用,但是您没有理由在 2019 年使用 var,而且它们也没有有效地利用 for 循环语法。

      let l = 0;
      for (let i = 0; i<5; i++){
          for(; l < i + 1; l++){
      
          }
      }
      console.log(l); // 5
      

      这个例子通过外层循环的迭代来维护l的值,然后也在最后保持它。

      【讨论】:

        【解决方案4】:
        var l = 0;
        for (var i = 0;i<5:i++){
            for(l; l<l+i;l++){
            }
        }
        

        将让您保留l 的最新值。顺便说一句,如果不使用break,我怀疑这将导致an无限循环,因为l 将始终小于l+i(当@ 987654326@ 不是 0)。

        编辑:循环不是递归

        【讨论】:

        • 这里没有递归,但可能是无限循环
        猜你喜欢
        • 2015-03-04
        • 1970-01-01
        • 2015-01-05
        • 1970-01-01
        • 2018-04-07
        • 1970-01-01
        • 2020-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多