我的代码如下:
jQuery(document).ready(function() {
var pic = 0;
FB.init({appId: '1355701231239404', status: true, cookie: true, xfbml: true});
FB.getLoginStatus(function(response) {
if (response.session) {
pic = "http://graph.facebook.com/" + response.session.uid + "/picture";
alert(pic);
} else {
window.location = "index.php"
}
});
});
</script>
问题是我的if语句中的pic与我上面声明的那个有不同的范围吗?为什么以及如何使它们相同?
我想要的是在我的html体内使用这个var pic(由if语句指定的那个)。我将在body中有另一个脚本,一个使用这个pic变量的document.write。截至目前,当我做一个document.write它总是给我0,好像它没有在if语句中分配
答案 0 :(得分:3)
问题是我的if语句中的pic有不同的范围
不,不是。 JavaScript范围是按功能划分的。 var pic = 0;
范围pic
为传递给ready()
的匿名函数。传递给getLoginStatus()
的匿名函数根本不使用var
,因此pic
的范围也相同。
(既然你没有说出你得到了什么结果或者你期望得到什么结果,很难说你问题的解决方案实际上是什么)
答案 1 :(得分:1)
但该代码段中只有一个pic
。所以你描述的问题不存在。你遇到了什么问题?与您的期望相比,代码是如何行为错误的?
<强>更新强>
好的,您的实际问题是您希望pic
更新,以便您可以在其他位置使用它的值。但请考虑:
FB.getLoginStatus(function(response) { ... });
函数执行回调而不是返回response
作为返回值的原因是因为它是异步的。获取响应需要一段时间,因此它不会立即执行回调。因此,在发生这种情况之前,即在使用值正确初始化pic
之前,您的其他代码可能正在执行。