我不能在函数中使用变量



我在函数中声明了一个带有空数组值的变量,然后在函数内使用它来分配返回值,然后我想在这个函数之外使用它,但在函数外部,这个变量仍然是空的。 请解释我做错了什么。

handleUpdateInputBusinessName = (searchText) => {
var names = [];
var displaySuggestions = function(predictions, status) {
if (status !== google.maps.places.PlacesServiceStatus.OK) {
alert(status);
return;
}
predictions.forEach(function(prediction) {
let name = prediction.description;
names.push(name);
});
console.log('names_in:', names); // valid predictions from Google Maps Service
return names;    
};
console.log('names_out:', names); // []
var service = new google.maps.places.AutocompleteService();
service.getQueryPredictions({ input: searchText, types: '(cities)'    
}, displaySuggestions);

这是精简版本:

a = [];
var b = () => {
a.push(1);
console.log('inside:', a)
};
console.log('outside:', a);
b();

"外部"控制台日志在调用displaySuggestions函数之前正在运行,因此数据尚未填充到数组中。

你必须使用JS匿名函数语法来定义下面的名称数组的范围。

handleUpdateInputBusinessName = (searchText) => {
var names = [];
var displaySuggestions = (predictions, status) => {
if (status !== google.maps.places.PlacesServiceStatus.OK) {
alert(status);
return;
}
predictions.forEach((prediction) => {
let name = prediction.description;
names.push(name);
});
console.log('names_in:', names); // valid predictions from Google Maps Service
return names;    
};
console.log('names_out:', names); // []
var service = new google.maps.places.AutocompleteService();
service.getQueryPredictions({ input: searchText, types: '(cities)'    
}, displaySuggestions);

希望这个哎呀。

相关内容

  • 没有找到相关文章

最新更新