JS全局变量保持不变

JS global variable remains unchanged

我有 2 个全局变量并将它们更改为一个函数,但它仍然显示为未定义。

var lat
var long;
function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else
    {
        console.log("Geolocation is not supported by this browser.");
    }
}
function showPosition(position)
{
    lat = position.coords.latitude;
    long = position.coords.longitude;
}
getLocation();
console.log(lat + "   " + long);

我已经检查了该站点上的其他问题,但 none 似乎对此有答案。当我检查 showPostion() 函数内部时,它会显示实际坐标。我是 js 新手,请帮助。

编辑:

我有另一个函数,我想在其中访问全局变量。

function generate_list(params, fromPageLoad)
{
    var ajax_url = jQuery('#ajax_post_url').val();
    var data = { action: 'generate_list', latitude: lat, longitude: long };
    var extended_data = jQuery.extend(data, params);

    jQuery.ajax({
    type: 'POST',
    data: extended_data,
    url: ajax_url,
    success: function (data) {
            //console.log(data);}
}

在使用动态参数加载页面时调用此函数。

我也尝试在 showPosition() 中 return lat lang 但它不起作用。 'POST' 或 'GET' 方法不 return 坐标变量。

function showPosition(position)
    {
        var ajax_url = jQuery('#ajax_post_url').val();
        var lat = position.coords.latitude;
        var long = position.coords.longitude;
        jQuery.ajax({
            type: 'POST',
            data: { lat: lat,long: long },
            url: ajax_url,
            success: function(data)
            {
            }
        });

        console.log("Latitude: " + position.coords.latitude +
            "Longitude: " + position.coords.longitude);
    }

如果用户允许该位置,我想更改列表。

geolocation.getCurrentPosition 是异步的 API。尝试将 console.log 移动到 function showPosition(position).
内 很多(如果不是全部)API 和 callback 是异步的。出门小心!

回答你亲爱的朋友

let lat;
let long;
navigator.geolocation.getCurrentPosition(success, null, {});

function success(pos) {
  lat = pos.coords.latitude
  long = pos.coords.longitude

  console.log('lat =',lat)
  console.log('long =',long)

}