全局变量‘map’未定义
2014-01-14
1149
我在打开脚本标记后声明了一个全局变量 map - 我还有一个全局变量 test_var,就在下面声明。在初始化函数中,我使用 google 地图 api 创建一个新的 google 地图并将其分配给全局变量 map。在函数之外,我初始化地图并尝试 console.log(map) 和 console.log(test_var)。前者返回未定义,后者返回 42,但它们都是全局变量,所以我不明白为什么在初始化函数中为 map 分配一个值后,调用该初始化函数现在具有未定义的值。
还有一件事:在控制台中,如果我尝试访问 map 或 map 方法(如 map.getBounds()),它可以正常工作。问题是,为什么我不能以编程方式执行此操作,而不仅仅是在控制台窗口中执行此操作。谢谢
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Heatmaps</title>
<style>
//.......some styling.....//
</style>
<body>
/....some html..../
</body>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=visualization"></script>
<script>
var map;
test_var = 42;
var home = new google.maps.LatLng(50, -15) //map is centered somewhere in the atlantic ocean, change later
function initialize() {
var mapOptions = {
zoom: 3,
center: home,
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true,
panControl: false,
zoomControl: true,
mapTypeControl: false,
scaleControl: false,
streetViewControl: false,
overviewMapControl: false
};
var styles = [
{
stylers: [
{ "gamma": 0.83 },
{ hue: "#00ffe6" },
{ saturation: -20 }
]
},{
featureType: "road",
elementType: "geometry",
stylers: [
{ lightness: 100 },
{ visibility: "simplified" }
]
},{
featureType: "road",
elementType: "labels",
stylers: [
{ visibility: "off" }
]
}
];
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
console.log(test_var); //this works!
console.log(map); //get undefined error, why?????
</script>
</head>
</html>
1个回答
这是因为当您调用
console.log(map)
时,您的事件处理程序(函数
initialize
)尚未调用。尝试将
console.log(map)
添加到按钮
<input type=button onclick="console.log(map)" value="Test map" />
Knaģis
2014-01-14