所以我有
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。那么怎么把函数内部的一个变量(结果,状态)取出来呢?
最佳答案
你可以这样做:
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
//
});
关于javascript - 如何返回函数内部的javascript函数外部的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8697164/