Page.ClientScript.RegisterStartupScript(this.GetType(),"CallMyFunction","Validate()",true);
上面的代码可以打印出' a'的正确值。在控制台中,但是当我将console.log(a)放在函数的底部时,就像下面一样,它无法打印正确的值而只是打印出来" undefined",为什么会这样?
function instate(loc)
{
var a;
var geocoder = new google.maps.Geocoder;
var infowindow = new google.maps.InfoWindow
geocoder.geocode({'location': loc}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(5);
var arrAddress = results[0].address_components;
$.each(arrAddress, function (i, address_component) {
if (address_component.types[0] == "administrative_area_level_1"){
a = address_component.short_name;
console.log(a);
}
//return false; // break the loop
});
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
}
答案 0 :(得分:1)
让我澄清一下代码中会发生什么。在instate
函数中,您定义一个名为a的变量,然后调用geocode
,并传递function
作为其第二个参数。在该函数内部,您可以为a
指定一个值。但是,在您定义它之后,尚未调用该函数。定义function
和调用它之间存在差异。由于function
是异步的,因此可以确定console.log
function
中指定的值不会像您预期的那样表现。