javascript函数返回不起作用 [英] javascript function return not working

查看:118
本文介绍了javascript函数返回不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的函数返回一个变量时出现问题,下面的脚本工作正常:
$ b $ pre $ function sessionStatus(){
$(document).ready(function(){
$ .getJSON(scriptRoot +sessionStatus.php,function(status){
alert(status);
});
});
}

sessionStatus();

当我尝试以下操作时,我打开一个消息框,显示消息undefined:

  function sessionStatus(){
$(document).ready(function(){
$ .getJSON(scriptRoot + sessionStatus.php,函数(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事物):
$ b $ pre $ 函数do(){
var x = 0 ;
(function(){
x = 2;
})();
return x;

或者:

<$ ()函数do(){
var x =(function(){
return 2;
})();
return x;
}

两者都返回2.希望这个解释一下。


I have a problem returning a variable in my function, the below script works fine:

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

sessionStatus();

Bet when I try the following I get a message box with the message "undefined":

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

This is really bugging me, I just can't seem to see what I've done wrong.

解决方案

There are two things you should know:

1: the JSON thing is asynchronous, so the function call to sessionStatus could already be done when the JSON is still being fetched. The following would work:

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

or rather:

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

2: even when it would be synchronous, you are only giving a return value from the inner function, so the sessionStatus would return nothing. Check out this code (not related to your JSON thing):

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

or:

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

Both return 2. Hopefully this explains a bit.

这篇关于javascript函数返回不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆