js变量作用域求解

为何我打印出uname是undefined
如果这么写
var uname="匿名用户";
$.get(xxx,function(res){
uname = "1111";
});
console.log(uname);
uname依然是"匿名用户",请问这是何解……
如果我想把uname定义成全局的,通过get的返回值给它赋值应该怎么写,谢谢




守候你守候我
浏览 535回答 2
2回答

慕尼黑8549860

跟作用域无关get默认是异步请求,即请求发送不影响后续代码的执行get方法要使用网络协议传送数据,即使速度再快也没有执行一条js代码的速度快所以在结果回来前console.log就已经执行了,uname是最初的值,当console.log执行后的N久时间,uname才被改(一个请求至少要几个毫秒),这个时间基本上几千行代码都能异步的执行完解决方法是将请求改为同步请求,请求时会阻塞其他语句的执行,直到返回结果你可以在get语句前设置全局ajax同步请求123$.ajaxSetup({      async : false  }); 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript