我正在使用Node.js.我创建了一个叫做locationToAddress的函数,但它总是返回undefined。这是简化了代码:JavaScript:函数返回值未定义
var lat = '-34.491093';
var long = '-58.558597';
console.log(locationToAddress(lat, long));
function locationToAddress(lat, long) {
var preUrl = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=';
var apiKey = '<API_KEY>';
var url = preUrl + lat + ',' + long + apiKey;
var addressString = '';
request(url, function (error, response, body) {
try {
var jsonLocationObject = JSON.parse(body);
addressString = JSON.stringify(jsonLocationObject.results[0].formatted_address);
addressString = addressString.replace(/["]/g, '');
console.log(addressString);
return addressString;
} catch (e) {
return 'Could not find address';
}
});
}
在控制台中,此代码应被视为:
<FORMATTED_ADDRESS>
<FORMATTED_ADDRESS>
但我看到:
undefined
<FORMATTED_ADDRESS>
我知道错误是在返回的价值,因为它完美的工作,如果我没有记录返回调用函数。
你可以通过输出的顺序看,该函数返回前* *收到的响应。 'request'是异步的。 *返回*一个值总是同步的。 –