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
。这一行运气好吗?