getUserData = function () { $.ajax({ "type": "get", "url": imgJson, "async": false, "success": function (data) { if(data.code==0){ res = data.code; }else{ res = data.data; } } }); return res; };执行这个方法的时候是 return 返回值;还是在以下success之后就res全局污染了"success": function (data) { if(data.code==0){ res = data.code; }else{ res = data.data; } }
1 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
两个都对
你的这个ajax是同步的请求 不是异步 就是说等请求结果返回了之后 代码才能继续执行 所以这里的res就是success执行完成后的结果
全局污染了, 因为变量没有使用var或者let来声明 就会被声明在全局变量上 所以也是全局污染
如果你把ajax中参数 改下 "async": true, 就看出区别了
那在请求返回之前 全局变量res都是undefined 所以还是getUserData函数返回值是undefined 但是在一段时间后其他地方直接使用res变量的话 还是能获取到值的 不过多少时间后能用 就不确定了
添加回答
举报
0/150
提交
取消
