以下代码应创建一个简单的“树”,但它会递归并崩溃。
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();
有人可以解释为什么会这样吗?
最佳答案
斜视是正确的,脚本始终将其推入相同的folders
数组,从而导致长度不断增加并且永远不会超出循环范围。您可以将createPage
函数更改为此:
function createPage() {
return {
properties: {},
cnt: cnt++,
folders: [],
items: []
};
}