我正在使用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'是異步的。 *返回*一個值總是同步的。 –