Javascript 设置变量并立即返回新值

Javascript 设置变量并立即返回新值,javascript,jquery,Javascript,Jquery,我在做这种事的时候遇到了一个问题 var abc = false; function doSomthing(){ abc = true; return abc; } 它返回false,但如果我运行该函数两次(在控制台中),第二次返回true 谢谢 原始函数 var session_id_resualt = false; function islogdin() { if (localStorage.email == undefined) { localStorage.e

我在做这种事的时候遇到了一个问题

var abc = false;
function doSomthing(){
abc = true;
return abc;
}
它返回false,但如果我运行该函数两次(在控制台中),第二次返回true

谢谢

原始函数

var session_id_resualt = false;

function islogdin() {
    if (localStorage.email == undefined) {
        localStorage.email = "";
    }

    if (localStorage.session_id == undefined) {
        localStorage.session_id = "";
    }

    $.post(server + "loginCheck.php", {
        loginCheck: "",
        cookie: readCookie("h"),
        session_id: localStorage.session_id,
        email: localStorage.email
    },

    function (json) {
        json = $.parseJSON(json);
        if (json.logdin) {
            if (json.logdin == "1") {
                //var s_id = json.session_id;
                session_id_resualt = json.session_id;
                //return s_id;          
            } else {
                session_id_resualt = false;
                //  return false;
            }

        } else {
            session_id_resualt = false;
            //  return false;
        }
    });
    return session_id_resualt;

}

$.post
是异步的。你需要等待结果。但是,由于
$.post
没有提供更改
$.ajax
设置的简单方法,因此您必须使用
$.ajax
代替
异步:false

var data = {
    loginCheck: "",
    cookie: readCookie("h"),
    session_id: localStorage.session_id,
    email: localStorage.email
};

var url = server + "loginCheck.php";

var callback = function (json) {
    /* ... */
}

$.ajax({
    type: "POST",
    url: url,
    async: false, /* importan! */
    data: data,
    success: callback,
});
参考资料:

您何时调用函数?检查您的调用点。如果在
doSomething
的范围之外有可用的函数,您为什么需要返回
abc
呢?我正在加载时调用函数。函数在我调用它的页面中包含的js文件中