javaScript中的alert()问题

详情看图片,如果将这个varfalg=null的话,在第三个弹出的alert就是null,求解释,谢谢!... 详情看图片,如果将这个var falg=null的话,在第三个弹出的alert就是null,
求解释,谢谢!
展开
 我来答
qweasd8771
2014-07-15 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:84.1万
展开全部
我感觉应该是$.post用的异步方式的原因。
执行顺序应该是这样的:yzCard -> alert("方法外面"+falg); 这里线程就阻塞了
异步线程 -> 执行 $.post -> alert("data:" + data); -> alert("flag=true后面:" + falg);
这个 alert("方法外面"+falg) 应该是第一个弹出的,只不过你的 $.post里面的代码是异步执行的,覆盖的这个alert,当你点击完$.post 里面的两个alert 才看到 alert("方法外面"+falg) 。然后点击确认后 才开始执行后面的if(falg==true)
由于$.post 里面的代码已经将falg 置为true 了 所有 就出现了 alert("这是个if判断,这说明falg=true");
追问

感觉您这样说挺合理的,但是我如果获取ajx的返回值,你知道吗?

追答
把ajax async 设置成 false
喜剧comic
2014-07-15 · TA获得超过103个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:79.8万
展开全部
很简单,你这里的data显然是String类型或者undefine,而结果返回的是“fasle”这个字符串,所以前面alret的是false,但是if(data)这句是成立的原因是,string类型不能作为判断依据。只有undefine或者bool类型的false才能让它不成立。
追问

感觉您这样说挺合理的,但是我如果获取ajx的返回值,你知道吗?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tsotsi
2014-07-15 · TA获得超过940个赞
知道小有建树答主
回答量:1367
采纳率:55%
帮助的人:694万
展开全部
这不是执行顺序的问题,而是js作用域链的问题。
追问

但是我如果获取ajx的返回值,你知道吗?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式