【问题标题】:Javascript - while loop runs infinite intermittently?Javascript - while 循环间歇性地无限运行?
【发布时间】:2018-10-17 12:25:40
【问题描述】:

如果我在控制台中运行以下函数(长度为 1 到 10 之间的整数),它会使浏览器崩溃。

function getStr(length) {
  var random = Math.round(Math.random() * Math.pow(10, length)).toString();
   while(random.length < length) {
       random = random.padEnd('1');
   }
   return random;
}

我不知道为什么。

【问题讨论】:

  • 你永远不会改变 random.length 的值。如果 random.length
  • 我想你想使用while(random &lt; length){}然后在while里面,改变random变量值
  • 你误解了padEnd方法。
  • 摆脱循环,做return random.padEnd(length, "1")
  • 根据这里的建议,我将 random.padEnd('1') 更改为 `random = random.padEnd('1') 也不起作用

标签: javascript while-loop infinite-loop


【解决方案1】:

您无法更改 random.length 的值、跳出循环或更改 while 条件。你需要一些方法来摆脱它,否则它将永远循环。

function getStr(length) {
    var random = Math.round(Math.random() * Math.pow(10, 
    length)).toString();
    while(random.length < length) {
        console.log(random.length, ‘-’, length);
        length = random.length + 1; //Change the value of length
        // OR you can just break out of the loop
        break; // Break out of the loop
    }
    return random;
}

Here is a resource to learn more about JavaScript while loops.

【讨论】:

  • 对不起,我把错误的代码放在那里,我会编辑它。我已经放了控制台日志进行调试,这是原始功能:function getStr(length) { var random = Math.round(Math.random() * Math.pow(10, length)).toString(); while(random.length &lt; length) { random.padEnd('1'); } return random; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 2014-01-30
  • 1970-01-01
  • 2015-06-25
相关资源
最近更新 更多