我的javascript函数没有返回任何内容。我真的不明白。这是一个可变范围的问题吗?
function getLanguage(){
navigator.globalization.getLocaleName(
function(locale){
var lan = locale.value;
},
function(){
var lan = null;
}
);
return lan;
}
谢谢!
答案 0 :(得分:3)
这是旧asynchronicity problem的副本,但第二个问题也是如此。
首先,范围。 lan
变量在内部函数中定义,因此无法从外部看到。
function getLanguage(){
var lan;
navigator.globalization.getLocaleName(
function(locale){
lan = locale.value;
},
function(){
lan = null;
}
);
return lan;
}
这很容易。但由于异步性,它仍然无法工作。您必须将函数设置为使用回调:
function getLanguage(callback){
navigator.globalization.getLocaleName(
function(locale){
callback(locale.value);
},
function(){
callback(null);
}
);
}
此外,到现在为止,我们甚至不需要变量,所以我摆脱了它。
然后,您将其称为:
getLanguage(function(lan){
// something with lan here
});