<script>
var lat ;
if(true) {
navigator.geolocation.getCurrentPosition(GetLocation);
function GetLocation(location) {
var lat = location.coords.latitude;
}
};
alert(lat);
</script>
现在我得到[对象HTMLInputElement],我在这里做错了吗?
答案 0 :(得分:2)
问题是,您在函数中声明了一个具有相同名称的变量,这意味着您有两个变量,一个是全局变量,另一个是本地变量。因此,当您提醒全局变量时,它尚未设置为任何内容。
您需要做的就是从函数中删除var关键字:
// global or other scope
var lat, firstUpdate = false;
if(true) {
navigator.geolocation.getCurrentPosition(GetLocation);
function GetLocation(location) {
// don't use var here, that will make a local variable
lat = location.coords.latitude;
// this will run only on the first time we get a location.
if(firstUpdate == false){
doSomething();
firstUpdate = true;
}
}
};
function doSomething(){
alert(lat);
}
修改强>
我编辑了答案,说明一旦找到第一个修复程序后如何确保调用函数。