使用递归自调用重写函数,以便解析RangeError最大调用堆栈大小

时间:2015-05-27 06:33:17

标签: javascript recursion

我有一个调用自身的函数,我没有看到任何潜在的无限循环,如果计数器小于数组的长度,我只运行循环。

有没有人知道调用堆栈大小为什么会抛出错误?

$("select option").click(function() {
    if ($("select option:selected").length > 3) {
        $(this).removeAttr("selected");
        alert('You can select upto 3 options only');
    }
});

我不能在for循环中运行它,因为我可以启动一个worker,直到完成前一个。或者至少在我尝试时,我收到了一个错误。 所以我在前一个worker的回调函数中运行下一个worker。

2 个答案:

答案 0 :(得分:2)

您正在使用后增量运算符(i++),它在增加变量之前返回当前值。换句话说,你总是用相同的i称呼你的功能。

使用pre-incremenet(++i)代替解决问题:

else (new Trainer(n)).workerTrain([data[i]], train(++i, trainingSet, l, y));

答案 1 :(得分:0)

netTwo未定义。 nTwo是函数中的一个参数,用于第一个if子句。但else if子句有一个名为" netTwo的未定义变量。"因此,我期待一个问题。