JavaScript不断返回' undefined&#39 ;,虽然控制台日志完全正常

时间:2014-03-26 03:28:03

标签: javascript

我无法弄清楚为什么我会得到这个结果,我从来没有能够掌握JavaScript,因为我总是被代码行为的不稳定性所吓倒到Python或Java。

我需要将变量lng_设置为当前经度,一旦我弄明白,我将对lat_执行相同操作。这是我的代码:

var lng_ = navigator.geolocation.getCurrentPosition(GetLong);
var lat_ = navigator.geolocation.getCurrentPosition(GetLat);    

function GetLong(location) 
{
    console.log(location.coords.longitude);
    var ret = location.coords.longitude;
    return ret;
}

console.log(lng_);

function GetLat(location) 
{
    return(location.coords.latitude);
}

如果您查看function GetLong(location),它应该返回经度值并包含一个JavaScript日志以显示它是否有效。

根据我的JavaScript日志,我得到了正确的结果

  

-122.15616500000002

但是当我将此值存储在ret并将其返回时,最终的console.log()会出现undefined

JavaScript如何知道它返回的是什么类型的对象,无论它是字符串还是int?什么是我的问题的解决方案?

1 个答案:

答案 0 :(得分:2)

您只需使用回调函数调用getCurrentPosition()一次,它在调用时实际上不会返回该位置;这样做的原因是该职位不会立即可用:

function getPosition(location)
{
    var lng_, lat_;

    lng_ = location.coords.longitude;
    lat_ = location.coords.latitude;

    // do stuff with position here
}

navigator.geolocation.getCurrentPosition(GetPosition);

它与其他异步操作在JavaScript中的工作方式非常相似。