js里面不能修改Boolean变量的数据是怎么回事?

如题所述

第1个回答  2017-10-31

这是很典型的异步问题:

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。

简单点说就是外层作用域取不到内层作用域内的变量,参考下图:

第2个回答  2017-10-31
使用$.ajax方法,设置async为false,表示同步,这样就可以修改了。。。本回答被提问者采纳
第3个回答  2017-10-31
逻辑“或”运算符(||)result=expression1||expression2;如果两个表达式中有一个或两个等于True,则result是True。
相似回答