下面的代码应该创建一个简单的“树”,但它变得递归并崩溃。
var cnt = 0;
var page = {
properties: {},
folders: [],
items: []
};
function createPage() {
var ret = $.extend({}, page);
ret.cnt = cnt++;
return ret;
}
var tree = createPage();
function addFolders(f, n) {
for (var i = 0; i < n; i++) {
f.push(createPage());
}
}
function createData() {
addFolders(tree.folders, 4);
for (var i = 0; i < tree.folders.length; i++) {
addFolders(tree.folders[i].folders, i);
}
}
createData();
有人可以解释一下为什么会发生这种情况吗?
最佳答案
squint 是对的,脚本总是推送到同一个 folders
数组,导致长度不断增加并且永远不会跳出循环。您可以将 createPage
函数更改为:
function createPage() {
return {
properties: {},
cnt: cnt++,
folders: [],
items: []
};
}
关于javascript - 非递归代码递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43954371/