如何从Javascript函数中正确提取局部变量?
实际上我有这个代码:如何从Javascript函数中正确提取局部变量?,javascript,variables,scope,geolocation,Javascript,Variables,Scope,Geolocation,实际上我有这个代码: var options = { enableHighAccuracy: true, timeout: 5000, maximumAge: 0 }; function success(pos) { var crd = pos.coords; var lat = crd.latitude; var lon = crd.longitude; var acc = crd.accuracy; console.log("latitude is ",
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos) {
var crd = pos.coords;
var lat = crd.latitude;
var lon = crd.longitude;
var acc = crd.accuracy;
console.log("latitude is ", lat);
var mydata = {latitude:lat, longitude:lon, accuracy:acc};
return mydata;
};
function error(err) {
console.warn('ERROR(' + err.code + '): ' + err.message);
};
navigator.geolocation.getCurrentPosition(success, error, options);
我对范围管理有很多疑问。如何从函数中获取变量lat、lon和acc?返回不起作用。。。我知道如果我在声明变量时不使用var,这将起作用,但我已经读到这是一种不好的做法。我想提取这三个变量,以便与另一个应用程序(如OpenStreetMap)一起使用。。。或者露天
非常感谢。在JavaScript中处理异步数据时,这是一个非常常见的问题 这里的技巧是创建一个命名函数,并在回调发生时绑定要更新的上下文:) 下面是一个观察者的示例,当发生成功、错误或任何其他更改时,该观察者将在属性更改时自动更新 HTML
<div id="geolocation">
<div class="button default"></div>
<div class="button success">
<latitude></latitude>
<longitude></longitude>
<accuracy></accuracy>
</div>
<div class="button error"></div>
</div>
以下是完整的工作示例:
希望有帮助 这可能是最常见的Javascript问题。您的结果是异步的。不能同步使用它们。您必须在回调本身中使用它们,或者从回调调用其他函数,并将它们传递给其他函数。这是你的两个选择。此外,还有大量关于处理异步响应的其他答案和文章。很抱歉,我不清楚这个问题。当你用return说它不起作用时,你面临的问题是什么?@jfriend00是的,抱歉重复这个问题。。非常感谢你的帮助,我会研究更多的。。。那个回叫让我很困惑。@Ashutshupadhyay基本上就像。。如何将局部变量从一个函数传递到另一个函数或全局作用域,而不将该变量声明为全局变量。。。很抱歉给你带来困惑。非常感谢,你帮了我很多忙,我也会对此进行更多研究,以便完全理解。
var success = function(pos) {
var crd = pos.coords;
this.default = "latitude is " + crd.latitude;
var mydata = {
latitude: crd.latitude,
longitude: crd.longitude,
accuracy: crd.accuracy
};
this.data = mydata;
}.bind(this);