关闭返回数组

时间:2014-09-01 13:13:37

标签: javascript node.js closures

ahah,关于关闭变量范围的问题^^

好吧,我发现了很多关于这个问题的问题,但找不到我问题的答案。

以下是代码:

var groups = [];
var users = [];

var getPermissions = function(accessList){
    var desk = [];
    _.forEach(accessList, function(access){
        desk.push(access.name);
        console.log("1 - Permission :" + desk);
    });

    return desk;
};

_.forEach(groups, function(group){
    _.forEach(users, function(user){
        var permissions = [];
        permissions = getPermissions(user.access);
        console.log("2 - Permission :" + permissions);
    });
});

你能告诉我为什么日志1给我回答,而2总是空的:(

谢谢大家

P.S:忽略代码的目的,我删除了它的一些部分......

1 个答案:

答案 0 :(得分:-1)

您需要使用回调才能使第二个控制台正常工作,因为当您的函数执行时,它将显示带有空白数组的控制台。

var getPermissions = function(accessList,callback){
    var desk = [];
    _forEach(accessList, function(access){
        desk.push(access.name);
        console.log("1 - Permission :" + desk);
    });

    callback(desk);
};

_.forEach(groups, function(group){
    _.forEach(users, function(user){
        var permissions = [];
       getPermissions(user.access,function(data){
    console.log("2 - Permission :" + data);   

     permissions =data;     
    });
});

});