我在函数中返回变量时遇到问题,以下脚本工作正常:
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;
}
or:
function do() {
var x = (function(){
return 2;
})();
return x;
}
两者都返回 2。希望这能解释一下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)