Javascript对象方法返回undefined?

时间:2012-03-21 09:47:49

标签: javascript function geolocation undefined

这是一个简单的问题,我在一个对象中有以下方法,为什么它返回undefined?

var getGeoLocation = function() {
            if (typeof(navigator.geolocation) != 'undefined') {
                var test = navigator.geolocation.getCurrentPosition(function(position) {
                    var lat = position.coords.latitude;
                    var lng = position.coords.longitude;
                    return(new google.maps.LatLng(lat, lng));    
                });
            }
        }
var testFunction = function() {alert(getGeoLocation()); // returns undefined?}

3 个答案:

答案 0 :(得分:7)

这是因为navigator.geolocation.getCurrentPosition是异步的。 getGeoLocation函数在传递给getCurrentPosition的匿名回调函数执行之前返回,并且由于getGeoLocation函数没有return语句,它返回undefined

根据回调中的navigator.geolocation.getCurrentPosition移动取决于响应的代码。

答案 1 :(得分:2)

它返回undefined,因为getGeoLocation不返回任何内容。试试这个:

var getGeoLocation = function() {
            if (typeof(navigator.geolocation) != 'undefined') {
                var test = navigator.geolocation.getCurrentPosition(function(position) {
                    var lat = position.coords.latitude;
                    var lng = position.coords.longitude;
                    alert(new google.maps.LatLng(lat, lng));    
                });
            }
        }
var testFunction = function() {getGeoLocation()};

答案 2 :(得分:0)

function GetCurrentLocation()
            {
                if (navigator.geolocation) { 
                    navigator.geolocation.getCurrentPosition(function(position) {  

                                                             var point = new google.maps.LatLng(position.coords.latitude, 
                                                                                                position.coords.longitude);
alert(point);
                } 
                else {
                    alert('W3C Geolocation API is not available');
                }
            }

使用此代码。它会给你完美的结果。