背景

想通过ajax初始化一个全局变量,代码如下

    function checkoldpass($pass) {
    var msg = null;
    $.ajax({
        type: 'get',
        url: '/admin/check',
        data: {'password': $pass},
        dataType: 'json',
        success: function (data) {
            msg = data
        }
    });
    console.log(msg);
   }

代码执行的时候会直接打印出null,为什么呢?
ajax请求原生就是异步的,在ajax回调函数外声明的变量,在ajax外打印会是null或者是undefined

解决
在请求的代码里加上async:false,把请求设置为同步的。这样只有回调之后,js才会执行下面的代码,这个问题也诠释了async设置为false与true的区别