Sta*_*nni 6 javascript return function
我在函数中返回变量时遇到问题,下面的脚本运行正常:
function sessionStatus(){
$(document).ready(function(){
$.getJSON(scriptRoot+"sessionStatus.php",function(status){
alert(status);
});
});
}
sessionStatus();
Run Code Online (Sandbox Code Playgroud)
在我尝试以下操作时打赌我会收到一个消息框,其中包含"未定义"消息:
function sessionStatus(){
$(document).ready(function(){
$.getJSON(scriptRoot+"sessionStatus.php",function(status){
return status;
});
});
}
alert(sessionStatus());
Run Code Online (Sandbox Code Playgroud)
这真是让我烦恼,我似乎无法看出我做错了什么.
小智 12
你应该知道两件事:
1:JSON事物是异步的,因此在仍然获取JSON时,已经可以完成对sessionStatus的函数调用.以下将有效:
function sessionStatus(callback){
$(document).ready(function(){
$.getJSON(scriptRoot + "sessionStatus.php", function(status){
callback(status);
});
});
}
sessionStatus(function(s){alert(s);});
Run Code Online (Sandbox Code Playgroud)
更确切地说:
function sessionStatus(callback){
$(document).ready(function(){
$.getJSON(scriptRoot + "sessionStatus.php", callback);
});
}
sessionStatus(function(s){alert(s);});
Run Code Online (Sandbox Code Playgroud)
2:即使它是同步的,你只是从内部函数给出一个返回值,所以sessionStatus什么也不返回.看看这段代码(与你的JSON事物无关):
function do() {
var x = 0;
(function(){
x = 2;
})();
return x;
}
Run Code Online (Sandbox Code Playgroud)
要么:
function do() {
var x = (function(){
return 2;
})();
return x;
}
Run Code Online (Sandbox Code Playgroud)
两者都返回2.希望这可以解释一下.