js 递归 传入的变量值每次在递归时被初始化了

代码如下:

 function recursionNode(html, node) {
    if (node.length > 0) {
        var len = node.length;
        for(var i = 0; i < len; i++) {
            var cnode = node[i];
            if (cnode.children != null) {
                recursionNode(html,cnode.children);
            } else {
                var jsonData = $.toJSON(cnode.data);
                var obj = $.parseJSON(jsonData);
                if (obj.type == 'Department') {
                    html += "<div>"+obj.name+"</div>";
                }
            }
        }
    }
}

在js中递归调用时,每次递归时html都被初始化成html = "";但在java中我一直是这么写的,html变量的值会叠加,为什么js中就不行?

3个回答

var html="";
function recursionNode( node) {
if (node.length > 0) {
var len = node.length;
for(var i = 0; i < len; i++) {
var cnode = node[i];
if (cnode.children != null) {
recursionNode(cnode.children);
} else {
var jsonData = $.toJSON(cnode.data);
var obj = $.parseJSON(jsonData);
if (obj.type == 'Department') {
html += "

"+obj.name+"
";
}
}
}
}
}
recursionNode(node);
console.log(html)
Myc_CSDN
和Java狼狈为奸 谢了。的确,全局变量是可行的。但为什么java里传入的变量值可行,js就不行啊,什么原理啊
大约 3 年之前 回复

你有一个作为全局变量的html么?换一个变量名看看

recursionNode(html,cnode.children);
->
return recursionNode(html,cnode.children);
或者下面加上return html;
没仔细看你的逻辑

Myc_CSDN
和Java狼狈为奸 谢谢。
大约 3 年之前 回复

function recursionNode(node) {
var html="";
if (node.length > 0) {
var len = node.length;
for(var i = 0; i < len; i++) {
var cnode = node[i];
if (cnode.children != null) {
recursionNode(html,cnode.children);
} else {
var jsonData = $.toJSON(cnode.data);
var obj = $.parseJSON(jsonData);
if (obj.type == 'Department') {
html += "

"+obj.name+"
";
}
}
}
}
return html;
}

//递归使用时,可以这样
html+=recursionNode(node);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问