这是很典型的异步问题:
var req = true;
//1、到这里还是顺序执行的,但是这里只是把请求异步发出去,然后就继续执行后边(2处)的代码了
$.post("/url",{},function(){
//这是回调函数,是等服务器响应完成之后才会执行这里的代码,也就是说,这里的代码执行的时候外层函数早已经执行完返回true了
//在这里改变req的值对外层是没有任何影响的。
req = data.check;
},"json");
//2、第1步把请求发出去之后就直接执行这句返回了,当然这里的req还是true
return req;
追问
确实是这样,但是其中data显示的是没定义,还是把赋了值是怎么回事
追答你的断点是打在外层函数内的,回调函数里边的变量是取不到的,你这看到的data其实并不是回调函数里边的data,而是断点所在的外层函数这个作用域的data,但是这里是没有定义data的,所以你在这里看data是not defined。
简单点说就是外层作用域取不到内层作用域内的变量,参考下图: