为了账号安全,请及时绑定邮箱和手机立即绑定

js变量作用域求解

js变量作用域求解

守候你守候我 2019-04-16 10:39:22
为何我打印出uname是undefined如果这么写var uname="匿名用户";$.get(xxx,function(res){uname = "1111";});console.log(uname);uname依然是"匿名用户",请问这是何解……如果我想把uname定义成全局的,通过get的返回值给它赋值应该怎么写,谢谢
查看完整描述

2 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

跟作用域无关

get默认是异步请求,即请求发送不影响后续代码的执行

get方法要使用网络协议传送数据,即使速度再快也没有执行一条js代码的速度快

所以在结果回来前console.log就已经执行了,uname是最初的值,当console.log执行后的N久时间,uname才被改(一个请求至少要几个毫秒),这个时间基本上几千行代码都能异步的执行完

解决方法是将请求改为同步请求,请求时会阻塞其他语句的执行,直到返回结果

你可以在get语句前设置全局ajax同步请求

1

2

3

$.ajaxSetup({  

    async : false  

});

 


查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 534 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号