如何在函数之外获取数据,我尝试全局变量但它不起作用? [复制]

Posted

技术标签:

【中文标题】如何在函数之外获取数据,我尝试全局变量但它不起作用? [复制]【英文标题】:how can I get the data outside the function, i try global variable but its not working? [duplicate] 【发布时间】:2020-12-07 20:48:23 【问题描述】:

我尝试了这种方法,它创建了一个全局变量,但它不起作用:

var long;
var lat;
function getLocation() 
if (navigator.geolocation) 
  navigator.geolocation.getCurrentPosition(showPosition);
 else 
  alert("Geolocation is not supported by this browser.");



function showPosition(position) 
// console.log(position.coords.latitude) 
// console.log(position.coords.longitude) 
lat = position.coords.latitude;
long = position.coords.longitude;
// console.log(lat) 
// console.log(long) 


console.log(lat) // the output is undefined
console.log(long) // the output is undefined



window.addEventListener('load', getLocation());

输出是

未定义 未定义

我怎样才能在函数之外拥有这些数据??

【问题讨论】:

您的日志语句在侦听器处理程序被调用之前执行 @ken4z 我试了一下还是不行 【参考方案1】:

你的代码中的lat和long是局部变量,所以如果你在函数中改变它们,全局变量不会改变。有几种方法可以解决这个问题。一种方法是使用对象概念。

var location = long: "", lat: ""

function getLocation() 
if (navigator.geolocation) 
  navigator.geolocation.getCurrentPosition(showPosition);
 else 
  alert("Geolocation is not supported by this browser.");



function showPosition(position) 
// console.log(position.coords.latitude) 
// console.log(position.coords.longitude) 
location.lat = position.coords.latitude;
location.long = position.coords.longitude;
// console.log(lat) 
// console.log(long) 


console.log(location.lat) // the output is undefined
console.log(location.long) // the output is undefined

window.addEventListener('load', getLocation());

第二种方法是返回 lat 和 long 值作为函数的结果。

【讨论】:

以上是关于如何在函数之外获取数据,我尝试全局变量但它不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

变量超出范围不起作用

我正在尝试折叠 onclick 方法上的导航栏,但它不起作用

如果全局不起作用,在Python中访问for循环之外的变量?

如何在 Jupyter 中打开 .tsv 文件? Jupyter.Notebook 尝试了建议,但它不起作用

我正在尝试更新数据,但它不起作用

地理定位 api javascript