Возвращаемое значение из вложенной функции в Javascript [дубликат]

На этот вопрос уже есть ответ здесь:

Как вернуть переменную из обратного вызова геокодера Google Maps JavaScript? 5 ответов

У меня есть функция, которая настроена следующим образом

function mainFunction() {
      function subFunction() {
            var str = "foo";
            return str;
      }
}

var test = mainFunction();
alert(test);

По моей логике, это предупреждение должно возвращать 'foo', но вместо этого оно возвращает undefined. Что я делаю неправильно?

ОБНОВИТЬ: Вот мой фактический код (это функция для обратного геокодирования с Google API)

function reverseGeocode(latitude,longitude){
    var address = "";
    var country = "";
    var countrycode = "";
    var locality = "";

    var geocoder = new GClientGeocoder();
    var latlng = new GLatLng(latitude, longitude);

     return geocoder.getLocations(latlng, function(addresses) {
     address = addresses.Placemark[0].address;
     country = addresses.Placemark[0].AddressDetails.Country.CountryName;
     countrycode = addresses.Placemark[0].AddressDetails.Country.CountryNameCode;
     locality = addresses.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
     return country;
    });   
   }

Ответы на вопрос(3)

Ваш ответ на вопрос