关于jQuery的$.get()的作用域问题

var artm=new Array();
var dptm=new Array();
$.get("xxxxx",{bdate:"2016-06-07"},
    function (data, textStatus){
        for(i=0;i<data.length;i++){
            artm[i]=Number(data[i].arr_time);
            dptm[i]=artm[i]+Number(data[i].length);
            $('#time_line').append(data[i].chart);
            console.log(artm[i]);
        }
    });

console.log(artm[0]);

clipboard.png
181的10是$.get()里输出的,186的undefined是console.log(artm[0]);输出的,那么$.get()里面运行的函数的变量不能调出来使用吗?

阅读 3.2k
2 个回答

问题不在作用域,而在于下面这个概念

事件循环

你的.get操作是异步操作,186输出时artm确实还没内容呢,所以你取他的第0个元素,当然是undefined。 而181则是在get的异步回调里,拿到的就是处理完的值

var request = $.ajax("url");
request.then(function(data){
    // 所有要操作data的代码写这
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题