Javascript 将值推送到未定义的json数组
创建了一个名为new_week的新json对象,并在其中初始化了一个新数组。它在初始化后立即打印,但在回调函数中,它表示它未定义,并在我尝试推送某个内容时抛出错误(因为它未定义)。为什么会这样Javascript 将值推送到未定义的json数组,javascript,json,node.js,Javascript,Json,Node.js,创建了一个名为new_week的新json对象,并在其中初始化了一个新数组。它在初始化后立即打印,但在回调函数中,它表示它未定义,并在我尝试推送某个内容时抛出错误(因为它未定义)。为什么会这样 for(var i = 0; i < week_arr.length; i++){ var new_week = {}; new_week[week_arr[i]] = [] console.log(new_week[week_arr[i]])
for(var i = 0; i < week_arr.length; i++){
var new_week = {};
new_week[week_arr[i]] = []
console.log(new_week[week_arr[i]]); //prints []
for(var j = 1; j < part_arr.length; j++){
client.hgetall("xyz", function(err,object){
console.log(new_week[week_arr[i]]); //prints undefined?
new_week[week_arr[i]].push(something);
}
}
}
for(变量i=0;i
请参阅“希望”,它还可以帮助您理解作用域和闭包,这样我就可以使用forEachloop作为内部循环,但如果我想从索引1开始呢?if函数(err,object){
是一种异步回调,这是因为使用计数器i
的for循环已完成,将i
设置为week\u arr.length
。如果是,请搜索“closure”和“loop counter”以查找现有答案。好的,感谢idk为什么回调如此复杂。“client.hgetall”是Redis db,是一个异步调用。