我对这个变量有疑问,不想在函数之外工作,我只是不明白为什么!这是代码:
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);
}
});
}
现在的问题是,globalData 仅将值保留在 getJSON 函数内和函数外,当我需要它时,它只是显示为空白(我在警报窗口中测试值)。我还尝试将“var”放在代码前面或从代码前面去掉。这里有什么问题吗?
最佳答案
您什么时候检查 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();
}
});
关于Javascript:如何制作这个变量。全局工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338198/