Javascript函数不返回任何内容

时间:2014-12-21 20:28:42

标签: javascript function

我的javascript函数没有返回任何内容。我真的不明白。这是一个可变范围的问题吗?

function getLanguage(){
    navigator.globalization.getLocaleName(
        function(locale){
            var lan = locale.value;
        },
        function(){
            var lan = null;
        }
    );
    return lan;
}

谢谢!

1 个答案:

答案 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
});