Javascript函数和显示全局变量

Javascript函数和显示全局变量,javascript,jquery,facebook-javascript-sdk,Javascript,Jquery,Facebook Javascript Sdk,我尝试这样做: <script> FB.getLoginStatus(function(response) { if (response.status==='connected') { var fb_status="on"; } else { var fb_status="off"; } }); alert("ok"+fb_status); <

我尝试这样做:

<script>
    FB.getLoginStatus(function(response) {  
        if (response.status==='connected') {
            var fb_status="on";
        } else {
            var fb_status="off";    
        }
    });

    alert("ok"+fb_status);

</script>

FB.getLoginStatus(函数(响应){
if(response.status==='connected'){
变量fb_status=“on”;
}否则{
变量fb_status=“关闭”;
}
});
警报(“正常”+fb_状态);
若我把警报放在函数内部,这个警报就起作用,另一方面,若我把这个警报放在外部,就不起作用

我相信这和php中的全局变量差不多,但是没有很多Javascript方面的经验

我只需要和我在示例中放的一样,在一个var中检测函数的结果,但就像我在示例中放的一样,在函数外部,我尝试了很多事情,但没有得到结果


向社区的帮助表示问候和感谢

FB.getLoginStatus是异步函数,因此当您尝试在其外部获取
FB\u状态时,您会得到
未定义的
,因为
FB.getLoginStatus
尚未返回任何结果

,因为
FB.getLoginStatus
调用是异步的,结果仅在稍后出现,并且仅与事件处理程序内部相关:

e、 g


FB.getLoginStatus(函数(响应)
{   
//这条线在许多毫秒后被调用
log(“当我有状态时”);
if(response.status==='connected')
{
变量fb_status=“on”;
}
其他的
{
变量fb_status=“关闭”;
}
警报(“正常”+fb_状态);
});
//这一行在回调返回之前很久就执行了
console.log(“通话后”);
查看控制台以查看事件顺序:

  • “通话后”
  • “当我有状态时”

您在注释中提到要在其他地方使用该值。问题在于时间安排,因为您想要的结果只会在稍后出现。

在区块外声明fb_状态变量,并在区块内指定所需的“开”和“关”。您正在订购比萨饼,然后在比萨饼交付之前尝试吃它!那不行,我试着(在这种情况下,你可以使用回调函数。请尝试这个链接,它回答了你的问题,是的,这就是它失败的原因,但问题的答案是什么?是的,我真的需要得到这个外部函数的结果,我可以用这个函数运行其他函数,但在这种情况下没有经验……@Miguel Garcia:由于时间问题,你不能只使用se是一个全局变量。你需要重新构造你的代码。你能展示你的例子的其余部分吗?
<script>
    FB.getLoginStatus(function(response) 
    {   
        // This line gets called many millisconds later
        console.log("When I have a status");
        if (response.status==='connected') 
        {
           var fb_status="on";
        }
        else
        {
            var fb_status="off";    
         }
         alert("ok"+fb_status);
    });
    // This line executes long before the callback returns
    console.log("After call");
</script>