如何返回函数内部的javascript函数之外的变量?

发布于 2024-12-24 01:03:19 字数 608 浏览 1 评论 0原文

所以我

  function find_coord(lat, lng) {
              var smart_loc;
      var latlng = new google.maps.LatLng(lat, lng);
        geocoder = new google.maps.Geocoder();
        geocoder.geocode( { 'latLng': latlng }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                smart_loc = new smart_loc_obj(results);
            } else {
                smart_loc = null;
            }
        });

        return smart_loc;
}

想返回 smart_loc 变量/对象,但它始终为 null,因为函数的范围(结果、状态)未达到 find_coord 函数中声明的 smart_loc。那么如何获取函数内部的变量(结果、状态)呢?

So I have

  function find_coord(lat, lng) {
              var smart_loc;
      var latlng = new google.maps.LatLng(lat, lng);
        geocoder = new google.maps.Geocoder();
        geocoder.geocode( { 'latLng': latlng }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                smart_loc = new smart_loc_obj(results);
            } else {
                smart_loc = null;
            }
        });

        return smart_loc;
}

I want to return the smart_loc variable/object but it is always null because the scope of the function(results, status) doesn't reach the smart_loc declared in the find_coord function. So how do you get a variable inside the function(results, status) out?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黯然 2024-12-31 01:03:19

您可以这样做:

var smart_loc;

function find_coord(lat, lng) {
  var latlng = new google.maps.LatLng(lat, lng);
    geocoder = new google.maps.Geocoder();
    geocoder.geocode( { 'latLng': latlng }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            smart_loc = new smart_loc_obj(results);
        } else {
            smart_loc = null;
        }
    });
}

或者如果您需要在 smart_loc 更改时运行函数:

function find_coord(lat, lng, cb) {
          var smart_loc;
  var latlng = new google.maps.LatLng(lat, lng);
    geocoder = new google.maps.Geocoder();
    geocoder.geocode( { 'latLng': latlng }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            smart_loc = new smart_loc_obj(results);
        } else {
            smart_loc = null;
        }

        cb(smart_loc);
    });
}

然后调用:

find_coord(lat, lng, function (smart_loc) {
    //
    // YOUR CODE WITH 'smart_loc' HERE
    //
});

You can do:

var smart_loc;

function find_coord(lat, lng) {
  var latlng = new google.maps.LatLng(lat, lng);
    geocoder = new google.maps.Geocoder();
    geocoder.geocode( { 'latLng': latlng }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            smart_loc = new smart_loc_obj(results);
        } else {
            smart_loc = null;
        }
    });
}

Or if you need to run a function when smart_loc changes:

function find_coord(lat, lng, cb) {
          var smart_loc;
  var latlng = new google.maps.LatLng(lat, lng);
    geocoder = new google.maps.Geocoder();
    geocoder.geocode( { 'latLng': latlng }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            smart_loc = new smart_loc_obj(results);
        } else {
            smart_loc = null;
        }

        cb(smart_loc);
    });
}

then call:

find_coord(lat, lng, function (smart_loc) {
    //
    // YOUR CODE WITH 'smart_loc' HERE
    //
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文