javascript函数返回不起作用

标签 javascript function return

我在我的函数中返回一个变量时遇到问题,下面的脚本工作正常:

function sessionStatus(){
    $(document).ready(function(){
        $.getJSON(scriptRoot+"sessionStatus.php",function(status){
            alert(status);
        });
    });
}

sessionStatus();

我敢打赌,当我尝试以下操作时,我会收到一个消息框,其中包含消息“未定义”:

function sessionStatus(){
    $(document).ready(function(){
        $.getJSON(scriptRoot+"sessionStatus.php",function(status){
            return status;
        });
    });
}
alert(sessionStatus());

这真的很烦我,我似乎看不出我做错了什么。

最佳答案

有两件事你应该知道:

1:JSON 是异步的,所以当 JSON 仍在获取时,对 sessionStatus 的函数调用可能已经完成。以下将起作用:

function sessionStatus(callback){
    $(document).ready(function(){
        $.getJSON(scriptRoot + "sessionStatus.php", function(status){
                callback(status);
        });
    });
}
sessionStatus(function(s){alert(s);});

或者更确切地说:

function sessionStatus(callback){
    $(document).ready(function(){
        $.getJSON(scriptRoot + "sessionStatus.php", callback);
    });
}
sessionStatus(function(s){alert(s);});

2:即使它是同步的,你也只是从内部函数中给出一个返回值,所以 sessionStatus 什么也不会返回。查看此代码(与您的 JSON 无关):

function do() {
    var x = 0;
    (function(){
       x = 2;
    })();
    return x;
}

或:

function do() {
    var x = (function(){
       return 2;
    })();
    return x;
}

两者都返回 2。希望这能解释一点。

关于javascript函数返回不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1732473/

相关文章:

javascript - 如何从下到上迭代子元素

javascript - 根据对象响应显示复选框 Angular

Javascript函数不停止提交

php - 如何制作包含最大长度的组合数组?

c - 在 C 中传递异常数量的函数参数如何仍能按预期工作?

c - 从函数返回字符串时出错

javascript - JS/JSX 函数总是返回 true,即使它是 false

javascript - 在网页上弹出

c++ - 如何使用运算符在同一行中多次调用函数

php - 这两个站点是如何构建为 'responsive' 的?