Javascript 将值推送到未定义的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]])

创建了一个名为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]]); //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,是一个异步调用。