gpt4 book ai didi

javascript - 在 JQuery foreach 上得到不同的答案

转载 作者:行者123 更新时间:2023-11-30 21:15:02 26 4
gpt4 key购买 nike

我试图读取 map/jsonobject 中的所有值。以下是我的函数调用,

a ={"a":{"b":"c"}}
result= test(a,'a')
console.log(result)

函数是,

function test(jsonObj,name){

main = ""
if(jQuery.type(jsonObj)==='object'){
$.each(Object.keys(jsonObj),function(){
main += test(jsonObj[this],name+'_'+this)
});
}else{
main +=jsonObj;
}
return main
}

当我执行上面的脚本时,我得到一个输出 c

后来稍微修改了一下功能,

function test(jsonObj,name){        
main = ""
if(jQuery.type(jsonObj)==='object'){
$.each(Object.keys(jsonObj),function(){
resp = test(jsonObj[this],name+'_'+this) //this line added
main +=resp
});
}else{
main +=jsonObj;
}
return main
}

现在我得到 cccc 作为我的输出。我无法理解这种行为。为什么我在引入新变量时会得到不同(意外)的结果?

最佳答案

您的变量 main 是在全局范围内声明的。因此,函数中的递归只是向其添加新结果。

通过使用 var 关键字声明变量,您可以将其作用域限制在函数中

function test(jsonObj, name) {        
var main = "";
if (jQuery.type(jsonObj)==='object') {
$.each(Object.keys(jsonObj),function() {
resp = test(jsonObj[this],name+'_'+this); //this line added
main +=resp;
});
} else {
main +=jsonObj;
}
return main;
};

a ={"a":{"b":"c"}};
result= test(a,'a');
console.log(result); // outputs 'c'

我还修复了您代码中的一些小拼写错误,例如缺少分号等。

关于javascript - 在 JQuery foreach 上得到不同的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45771679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com