你好我有这个功能
locDistance(alat[i-1], alon[i-1], alat[i], alon[i]);
function locDistance(lat1, lon1, lat2, lon2) {
//Radius of the earth in: 1.609344 miles, 6371 km | var R = (6371 / 1.609344);
//var R = 3958.7558657440545;
var R = 3958.7558657440545;
var dLat = toRad(lat2-lat1);
var dLon = toRad(lon2-lon1);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
var dist = d;
};
function toRad(Value) {
/** Converts numeric degrees to radians */
return Value * Math.PI / 180;
}
我知道我必须在函数外声明变量才能在另一个地方使用它 所以我在页面顶部定义了
var dist = 0;
我想像这里一样在另一个函数中使用变量“dist”
$('.content').append(dist);
但问题是由于 dist 变量,我一直得到 0。
我已经检查过,但在 de locDistance 函数内部,dist 变量具有不同的值,因为它应该是这样的,所以这里的函数不是问题
我做错了什么?
提前谢谢你
最佳答案
上面的代码不起作用的原因是在 locDistance 方法中使用了 var 关键字,从而在每次调用函数时将 dist 设置为局部变量,并将全局 dist 设置为 0。
话虽这么说......
也许您更愿意让 locDistance 返回值,然后在需要时调用该函数,例如:
$('.content').append(locDistance(alat[i-1], alon[i-1], alat[i], alon[i]));
function locDistance(lat1, lon1, lat2, lon2) {
//Radius of the earth in: 1.609344 miles, 6371 km | var R = (6371 / 1.609344);
//var R = 3958.7558657440545;
var R = 3958.7558657440545;
var dLat = toRad(lat2-lat1);
var dLon = toRad(lon2-lon1);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
return d;
}
function toRad(Value) {
/** Converts numeric degrees to radians */
return Value * Math.PI / 180;
}
关于javascript - 在函数外使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13421225/