0

My javascript function doesn't return anything. I really don't get it. Is it a problem of variable scope?

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

Thank you!

DescampsAu
  • 1,056
  • 2
  • 10
  • 29

1 Answers1

4

This is a duplicate of the old asynchronicity problem, but there's a second issue as well -- scope.

First of all, scope. The lan variable is defined inside the internal function, and so cannot be seen from outside.

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

That was easy. But it still won't work, due to asynchronity. You have to set up your function to use a callback instead:

function getLanguage(callback){
    navigator.globalization.getLocaleName(
        function(locale){
            callback(locale.value);
        },
        function(){
            callback(null);
        }
    );
}

Also, by now, we don't even need the variable, so i got rid of it.

Then, you call it as:

getLanguage(function(lan){
    // something with lan here
});
Community
  • 1
  • 1
Scimonster
  • 32,893
  • 9
  • 77
  • 89