javascript - 在函数外使用变量

标签 javascript variables return parameter-passing declare

你好我有这个功能

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/

相关文章:

javascript - Service Worker 注册失败

javascript - 使用 sudo 从 Node.js 运行命令

variables - docker-compose 覆盖应用程序属性

bash - 评估 bash "&&"退出代码行为

javascript - Jquery 和 Get 遍历 API

javascript - 如何将更改应用于 jQuery 中的当前类?

c++ - 为什么 c++ 将大数四舍五入到 ceil 并将小数四舍五入到地板

c - 未初始化变量的值是由编译器设置的还是由什么设置的?

java - 如何访问 try catch block 外的变量

python - 运行外部子进程并读取返回码