Javascript:无法更改全局变量值

Javascript:无法更改全局变量值,javascript,facebook,facebook-graph-api,global-variables,scope,Javascript,Facebook,Facebook Graph Api,Global Variables,Scope,显示的值为零!? 它不应该给l.data.length一个值吗?! 如果我有警报(a);在a行之后=l.data.length; 其工作:/ 更新: 既然FB.api是异步的,那么有没有其他方法来修改 其异步性; 所以到那时 FB.api(...,function (..){ var a = 0 ; FB.api(...,function (l){ a = l.data.length; }); alert(a) ; }); 执行警报(a)将已执

显示的值为零!? 它不应该给l.data.length一个值吗?! 如果我有警报(a);在a行之后=l.data.length; 其工作:/

更新: 既然FB.api是异步的,那么有没有其他方法来修改

其异步性; 所以到那时

FB.api(...,function (..){
  var a = 0 ;
  FB.api(...,function (l){
         a = l.data.length;
  });
     alert(a) ;     
});
执行警报(a)将已执行

编辑: 下一个操作应该在同一个函数中设置变量a之后写入

function (l){
     a = l.data.length;
})

FBAPI是异步的

如果在更改变量的值后需要使用该变量,请向函数发送回调并在回调中获取该变量

function (l){
     a = l.data.length;
     nextThing1();
     nextThing2()
})

a=l.data.length
在回调函数中,它将在调用回调函数时执行


但是,
FB.api
FB api异步后,将立即执行
警报(a)
。因此,您应该在回调函数中提醒
a
的值

var callback = function(){
  alert(a);
}
FB.api(...,function (l, callback){
         a = l.data.length;
         callback();
  });

如果我需要改变a的值。我应该怎么做?那么下一个操作应该写在封闭函数的a=l.data.length行之后,如果我需要将值分配给a;在去下一行之前?或者以其他方式阻止下一行执行直到函数结束?这种不同的形式如何在a=l.data.length之后发出警报(a)?完全相同,但是,当必须在回调中执行的命令将在同一函数的另一次调用中更改时,这是必需的。抱歉,我无法理解当您有一个函数执行类似于
var sum=function(a,b){sum=a+b}的操作时,您试图暗示@user123456什么
添加与功能无关的命令是不正确的。i、 e.一次我在做警报(sum),一次generalSum+=sum。这就是为什么您必须以回调的形式发送想要的命令
callback1=function(){alert(sum);}
callback2=function(){generalSum+=sum;}
然后我可以根据需要调用函数-
sum(1,2,callback1)
sum(1,2,callback2)
function (l){
     a = l.data.length;
     alert(a);
})