2014-09-01 55 views
-2

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是所有的時間空:(

謝謝大家

PS :忽略代碼的目的,我刪除了它的一些部分...

+0

你能在小提琴中重現你的問題嗎?我想你改變了代碼,它根本不顯示你真正的問題,這可能是*異步*。 – 2014-09-01 13:16:39

+0

由於'users'是一個長度爲零的列表,循環將立即中止,並且根本沒有輸出。您需要提供足夠的代碼才能真正重現問題。 – Quentin 2014-09-01 13:17:44

+0

第6行有一個拼寫錯誤 - '_forEach'應該是'_.forEach'。 – 2014-09-01 13:22:01

回答

-1

你需要利用回調inorder來獲得第二個控制檯的工作,就像你的函數執行的時候d將顯示空白陣列的控制檯。

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

});

+0

downvote的原因是什麼? – V31 2014-09-01 13:29:56

+0

這次有什麼好運? – V31 2014-09-04 13:53:17