Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回数组的闭包_Javascript_Node.js_Closures - Fatal编程技术网

Javascript 返回数组的闭包

Javascript 返回数组的闭包,javascript,node.js,closures,Javascript,Node.js,Closures,啊哈,关于闭包中变量作用域的问题^^ 嗯,我发现了很多关于这个问题的问题,但找不到任何答案 代码如下: var groups = []; var users = []; var getPermissions = function(accessList){ var desk = []; _.forEach(accessList, function(access){ desk.push(access.name); console.log("1 - P

啊哈,关于闭包中变量作用域的问题^^

嗯,我发现了很多关于这个问题的问题,但找不到任何答案

代码如下:

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一直是空的吗(

谢谢大家


注意:忽略代码的目的,我删除了其中的一些部分…

您需要使用回调来让第二个控制台工作,因为在执行函数时,它将显示带有空白数组的控制台

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;     
    });
});

}))

你能用小提琴再现你的问题吗?我猜您对代码的更改太多,根本没有显示您真正的问题,这可能是异步性。由于
users
是一个长度为零的列表,因此循环将立即中止,您将无法获得任何输出。您需要提供足够的代码来实际重现问题。第6行有一个打字错误-
\u forEach
应该是
\u forEach
。这一行运气好吗?