javascript - 从 Javascript 中的嵌套函数返回值

标签 javascript function nested return-value return

<分区>

我有一个函数,设置如下

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

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

按照我的逻辑,该警报应返回“foo”,但它返回未定义。我做错了什么?

更新:这是我的实际代码(这是一个使用 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;
    });   
   }

最佳答案

你必须先调用一个函数,然后它才能返回任何东西。

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

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

或者:

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

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

为您的实际代码。返回应该在外面,在主函数中。回调在 getLocations 方法中的某处被调用,因此它的返回值不会在您的主函数中收到。

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

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

    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
   }

关于javascript - 从 Javascript 中的嵌套函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2611980/

相关文章:

php - PHP-在MySQL函数中使用HTML表单函数中的变量在另一个函数中查询

python - 如何避免使用 import 并仍然从函数中获得相同的输出?

sublimetext - Sublime Text 3是否有显示元素 parent 的插件?

python - 如何在嵌套的 try/except block 中重新引发异常?

elasticsearch - 通过嵌套对象查询/筛选在某些嵌套对象中获得意外结果

javascript - 麻烦单元测试 Angular react 性表单字段

javascript - 使用 Javascript 进行 ASP.NET 复选框列表验证

javascript - 在实例化 Controller 之前未解析 JSON 对象

c++ - 从静态函数调用非静态变量

javascript - 在tensorflow.js中创建使用null作为批量维度的张量