我已经检查了所有可用的问题,并且我知道在处理 jQuery 的 $.each 循环时存在一些奇怪的情况。我似乎不明白为什么在该范围之外声明但在该范围内初始化的变量也会丢失。我现在不处理 DOM,只是使用 getJSON 来提取一些数据并将其传递给其他函数以供以后使用。
这就是我想做的一切,但我完全感到困惑。
function getJSONData(){
var ar = [];
$.getJSON('pathto.json', function(data){
$.each(data, function(k,v){
ar.push(k); // lots of data in ar
});
});
return ar; // ar is empty again.
}
对于那些无知的人来说,这里有什么线索吗?我已经尝试了我能想到的“this”的所有排列,并在 getJSON 循环中初始化 ar。
非常感谢!
最佳答案
getJSON 是异步的,因此该函数将在填充 ar 之前立即返回,您需要执行以下操作:
function getJSONData(callback){
$.getJSON('pathto.json', function(data){
var ar = [];
$.each(data, function(k,v){
ar.push(k); // lots of data in ar
});
callback(ar);
});
}
getJSONData(function(ar) {
console.log(ar);
});
关于javascript - jQuery $.each 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34688403/