Javascript:如何制作这个var.全球工作

Kyl*_*iss 2 javascript variables jquery

我有一个问题,这个变量不想在函数外工作,我只是不明白为什么!这是代码:

globalData = new Array();

 // 
 // Colors
 //
 if ( settings.category == 'colors' ) {
  $.getJSON(colorLoversURL, function(data) {
   for ( var i in data ) {
    var localData = data[i].hex;
    globalData.push(localData);
   }
  });
 }

 // 
 // Palettes
 //
 else if ( settings.category == 'palettes' ) {
  $.getJSON(colorLoversURL, function(data) {
   for ( var i in data ) {
    var localData = new Array();
    for ( var j in data[i].colors ) {
     localData.push(data[i].colors[j]);
    }
    globalData.push(localData);
   }
  });
 }
Run Code Online (Sandbox Code Playgroud)

现在的问题是globalData只保留getJSON函数内部的值,并且在我需要它时,它只是空白(我在警报窗口中测试值).我也尝试在代码前面打开和关闭'var'.这里有什么问题吗?

Cha*_* Ma 5

你什么时候检查globalData?

两次对getJSON的调用都使用回调来操作globalData,因此在检查globalData之前可能还没有调用该函数.不要忘记你在那里使用异步javascript.

如果是这种情况,我建议使用功能链

 function useGlobalData() {
    alert(globalData); 
    //do other stuff
 }
 // 
 // Palettes
 //

  $.getJSON(colorLoversURL, function(data) {
   for ( var i in data ) {
    var localData = new Array();
    for ( var j in data[i].colors ) {
     localData.push(data[i].colors[j]);
    }
    globalData.push(localData);
    useGlobalData();
   }
  });
Run Code Online (Sandbox Code Playgroud)