使用随机数填充javascript数组会导致浏览器崩溃

时间:2015-09-07 23:33:59

标签: javascript

我有两个javascript函数,用于模拟D& D类型游戏中的骰子掷骰。

第一个函数getRandom()接收一个较小的数字和一个较大的数字,并在这两个数字之间吐出一个随机整数。

function getRandom(low, high) {
    return Math.floor(Math.random() * (high - low + 1)) + low;
}

第二个函数dropLow()应该掷骰子四次,掉落得分最低的骰子并加上剩余的三个。只要总数大于9,它就会返回总数。

function dropLow() {
    var rolls = [],
        lowest,
        total;
    do {
        total = 0;
        for (x = 0; x < 4; x++) {
            rolls.push(getRandom(1,6));
            total += rolls[x];
        }
        lowest = rolls[0];
        for (x = 1; x < 4; x++) {
            if (rolls[x] < lowest) {
                lowest = rolls[x];
            }
        }
        total -= lowest;
    } while (total < 10);
    rolls.length = 0;
    return total;
}

如果我只调用dropLow()一次,一切都很好。但我称之为越多,我的浏览器(Chrome)就越频繁地崩溃并崩溃(具体错误是:“Aw Snap!显示此网页时出现问题。继续,重新加载或转到另一个页面。”)。我想也许我的浏览器中的一些设置导致了问题,所以我在平板电脑上拉了一下页面,它仍然冻结/崩溃。拉出firefox并出现同样的问题。

我已经考虑过摧毁阵列,或至少清除它的内容,因为我不断在原版上构建,但似乎并非如此。

任何人都可以帮我弄清楚这是怎么发生的?

1 个答案:

答案 0 :(得分:1)

rolls = []循环中移动do

由于您没有重置阵列,因此您使用的是旧值。如果do..while循环运行两次,那么它始终使用相同的低值,从而导致崩溃。