Javascript 访问闭包外部的变量

Javascript 访问闭包外部的变量,javascript,facebook,Javascript,Facebook,我被JavaScript的作用域弄糊涂了。我调用了FB.api(如下所示),希望返回一个响应对象: (function() { var permissions; FB.api("/me/permissions", "get", {access_token: options.token}, function(r) { permissions = r; }); console.log(permissions); })(); 理想情况下,我希望将F

我被JavaScript的作用域弄糊涂了。我调用了
FB.api
(如下所示),希望返回一个响应对象:

(function() {
    var permissions;

    FB.api("/me/permissions", "get", {access_token: options.token}, function(r) {
        permissions = r;
    });

    console.log(permissions);
})();
理想情况下,我希望将FB.api分配给一个变量,并使用匿名函数返回
r
组件,但这似乎不可行


为什么
权限
未定义?有没有办法在父作用域中设置权限?

FYI,问题不在于作用域,而在于时间。您正在调用
console.log(permissions)
之前的
permissions=r被执行。这可能是这里问得最多的问题之一。啊,谢谢菲利克斯。我很感激。有没有一个好的资源可以教用户如何管理它?我不确定我应该用什么搜索词。非常感谢!看看重复的问题。搜索“异步JavaScript”也会产生结果。解决方案是“回电”,尤其是“承诺”。谢谢Felix,你帮了我很大的忙。