Chrome中的最大调用堆栈大小和IE中的堆栈空间超出(JavaScript)

时间:2014-08-16 18:48:52

标签: javascript jquery

我有一个像这样的递归方法:

PrintRecursive = function (arr, level) {
    for (var key in arr) {
        var term = arr[key];
        htmlArr.push("<li><input type=\"radio\" name=\"tempName\" id=\"" + term.Id + "\" data-taxonomy-url=\"" + term.Url + "\" /><label for=\"" + term.Id + "\">" + term.Title + "</label>");
        if (term.ChildTerms !== undefined && term.ChildTerms != null) {
            htmlArr.push("<ul>");
            PrintRecursive(term.ChildTerms, ++level);
            level--;
            htmlArr.push("</ul>");
            htmlArr.push("</li>");
        }
        else {
            htmlArr.push("</li>");
        }
    }
}

它在IE中生成Out of stack space,在Chrome中尝试执行htmlArr.push时生成Maximum call stack size exceeded。 arr是一个数组数组,但arr中的项目总数为385项。 我是否得到这个错误,因为我使用了被调用太多次的递归方法?还是因为htmlArr包含太多数据(html)?

1 个答案:

答案 0 :(得分:1)

这意味着您的递归函数会影响浏览器的特定调用堆栈限制。

修复它并获取更多信息请看下面的帖子: Maximum call stack size exceeded error