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>