我的javascript函数未返回任何内容。我真的不明白。这是可变范围的问题吗?
function getLanguage(){
navigator.globalization.getLocaleName(
function(locale){
var lan = locale.value;
},
function(){
var lan = null;
}
);
return lan;
}
谢谢!
最佳答案
这是旧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
});