JavaScript递归元素创建失败

JavaScript递归元素创建失败,javascript,recursion,Javascript,Recursion,我不明白为什么会失败: var recursiveElementGenerator = function (elem_spec) { elem = document.createElement(elem_spec.tag); if (elem_spec.children) { for (var i=0; i<elem_spec.children.length; i++) { var c_elem = elem_spec.childr

我不明白为什么会失败:

var recursiveElementGenerator = function (elem_spec) {
    elem = document.createElement(elem_spec.tag);

    if (elem_spec.children) {
        for (var i=0; i<elem_spec.children.length; i++) {
            var c_elem = elem_spec.children[i];
            var n_elem = recursiveElementGenerator(c_elem);
            alert(elem===n_elem);
            elem.appendChild(n_elem);
        };
    };
    return elem;
};
var recursiveElementGenerator=函数(元素规格){
elem=document.createElement(elem_spec.tag);
if(元素规格子项){
对于(var i=0;i尝试使用:

var elem = document.createElement(elem_spec.tag);
而不是:

elem = document.createElement(elem_spec.tag);

不使用
var
关键字会使变量在全局范围内运行。使用它将在局部范围内创建变量,从创建的行到函数定义的结尾。

我将查看
elem\u spec
参数。您能发布一个示例吗?+1个好的捕获!全局变量已被删除在递归调用中使用。这就是为什么
n_elem
总是指向与
elem
全局变量相同的对象。是的,这是一个d'oh时刻——谢谢——我今天早上试图向上投票/接受,但stackoverflow遇到了一些故障,无法接受我的输入