对于循环与执行...同时

时间:2018-09-19 01:07:51

标签: javascript loops

背景

我只是在学习JavaScript,所以我认为入门的好方法是编写my own dice roller for an RPG I play。在本游戏中,您掷出几个六面骰子,其中每个4或5值得一个成功,每个6则值得2个成功。

我有一个功能,可以掷骰子,并通过数组将骰子传递给另一个函数,该函数对其进行HTML标准化,以显示在网页上。

代码

为了掷骰子,我拥有标准的骰子掷骰子功能(sides变量是因为有时您可以掷出侧面不为6的骰子,因此我将该功能用于所有骰子):

function rollDice(sides) {
  return Math.floor(Math.random()*sides) + 1;
}

由于掷骰子的数量不同,因此我的主函数多次调用此rollDice()函数并将每个结果放入数组中。

这是主要功能,其中number是掷骰子的数量:

function dice(number) {
  let results = [];
  for (i=0; i<number; i++){
    results.push(rollDice(6));
  }
  return results;
}

但是,此后,我了解了do…while循环,并设法对其进行了重构:

function dice(number) {
  let results = [];
  do {
    results.push(rollDice(6));
  } while (results.length < number)
  return results;
}

实际问题

使用哪种循环更“正确”或最佳实践? for还是do…while

1 个答案:

答案 0 :(得分:1)

您可以只使用一个简单的while循环,它等效于您的for循环示例。

function dice(number) {
  let results = [];
  while (results.length < number) {
    results.push(rollDice(6));
  }
  return results;
}

我最喜欢这种方法的可读性(部分原因是它不会创建额外的迭代器变量),但是for循环也很好。 do...while循环有效,但不需要额外的语法。