JavaScript中的全局变量在使用getJSON时未设置?

这是我的代码。 如果我通过“谷歌检查员”检查“恶作剧”变量一切正常。 但是最后一行的“警报”显示了一个0大小的数组! 我捣乱了本地/全局变量?

 (function() { pranks = []; function getAllPranks(){ $.getJSON('list.json', function(data) { $.each(data['pranks'], function(key, val) { pranks.push(val); }); }); } $(document).ready(function(){ getAllPranks(); alert(pranks.length); }); }());  

拿你的代码:

  

$.getJSON是异步的。 这意味着一旦结果返回,就会执行回调函数( function(data) )。 执行alert(pranks.length) ,该函数尚未执行,因为此时响应尚未返回。

将其更改为:

 $.getJSON('list.json', function(data) { $.each(data['pranks'], function(key, val) { pranks.push(val); }); alert(pranks.length); /* pranks has data now */ });