javascript函数返回不起作用 [英] javascript function return not working
问题描述
我的函数返回一个变量时出现问题,下面的脚本工作正常:
$ 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屋!