返回数组的闭包
Closure which return array
啊,关于闭包中变量作用域的问题^^
嗯,我发现了很多关于这个主题的问题,但找不到任何答案。
这是代码:
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:忽略代码的目的,我删除了其中的一些部分。。。
您需要利用回调来让第二个控制台工作,因为当您的函数被执行时,它将显示带有空白数组的控制台。
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;
});
});
});
相关文章:
- JavaScript闭包和返回数组元素
- 从数组中调用方法和闭包
- 为什么这个 JavaScript 闭包数组保留旧值
- 带有函数参数数组的闭包
- 创建带有回调的动态 JSON 数组(内部闭包问题)
- 使用闭包编译器类型检查数组内容
- 在闭包中公开数组的状态,而不允许从外部对其进行编辑
- 数组中jQuery元素的常见JavaScript闭包问题
- 带有节点数组的Javascript闭包
- 实现闭包以将数组索引“携带”到另一个数组
- 使用数组的javascript中的闭包
- 返回数组的闭包
- 谷歌闭包编译器类型注释数组
- 如何在加载后将媒体变量添加到数组时不改变它们.闭包
- 在javascript中创建数组并在闭包内追加值
- 为什么谷歌闭包编译器警告数组的长度
- for循环中的Ajax不会返回数组位置的正确值,尽管闭包绑定了当前值位置的范围
- 使用循环在数组中存储闭包函数
- Javascript数组和闭包
- 使用闭包传递数组值