一般的javascript

时间:2011-11-12 03:02:44

标签: javascript

我一段时间没有用js写过,显然有点生疏了。试图了解以下问题。 getCurrentPosition successCallback中的提醒正确显示了纬度,但最后一行提醒undefined。为什么我的client_location函数在函数外部调用时返回纬度?

client_location = function() {
  if (navigator.geolocation) {
    return navigator.geolocation.getCurrentPosition(function(position) {
      alert(position.coords.latitude);  ## RETURNS LATITUDE CORRECTLY ##
      return position.coords.latitude;
    });
  }
};
alert(client_location());               ## RETURNS UNDEFINED ##

2 个答案:

答案 0 :(得分:3)

您正在将回调传递给getCurrentPosition,并且您的alert位于该回调中。你的return position.coords.latitude也在回调中。您的client_location函数会返回getCurrentPosition次返回和getCurrentPosition doesn't return anything

如果你想用纬度做某事,你必须在你的回调中做;你可以像这样回复client_location

client_location = function(callback) {
  if (navigator.geolocation) {
    return navigator.geolocation.getCurrentPosition(function(position) {
      callback(position.coords.latitude);
    });
  }
};

client_location(function(lat) {
    alert(lat);
});

答案 1 :(得分:0)

如果设备未返回地理位置,则未定义。 添加else语句来处理没有地理位置。

client_location = function() {
  if (navigator.geolocation) {
    return navigator.geolocation.getCurrentPosition(function(position) {
      alert("clientLocation: "+position.coords.latitude);
      return position.coords.latitude;
    });
  }else{
    return("no navigator.geolocation");  
  }
};
alert(client_location());