我有一个像这样的递归方法:
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)?
答案 0 :(得分:1)
这意味着您的递归函数会影响浏览器的特定调用堆栈限制。
修复它并获取更多信息请看下面的帖子: Maximum call stack size exceeded error