通用javascript

通用javascript,javascript,Javascript,我已经有一段时间没有用js写东西了,显然有点生疏了。试图理解以下问题。getCurrentPosition successCallback中的警报正确显示纬度,但最后一行警报undefined。为什么我的client_location函数在函数外部调用时不返回纬度 client_location = function() { if (navigator.geolocation) { return navigator.geolocation.getCurrentPosition(fun

我已经有一段时间没有用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 ##

您正在将回调传递给
getCurrentPosition
,并且您的
警报
在该回调中。您的
返回位置.coords.latitude
也在该回调中。您的
client\u location
函数返回任何
getCurrentPosition
返回和

如果你想用纬度做点什么,你必须在回调函数中做;您可以将
client\u location
这样的回调交给以下人员:

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

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

您正在将回调传递给
getCurrentPosition
,并且您的
警报
在该回调中。您的
返回位置.coords.latitude
也在该回调中。您的
client\u location
函数返回任何
getCurrentPosition
返回和

如果你想用纬度做点什么,你必须在回调函数中做;您可以将
client\u location
这样的回调交给以下人员:

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

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

如果设备未返回地理位置,则未定义。 添加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()); 

如果设备未返回地理位置,则未定义。 添加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()); 

+1用于链接到
接口地理定位
。确切显示了为什么最终警报值是未定义的,而不是任意的。@Ray:我更喜欢提供权威参考,而不是期望人们相信我是权威。hm。我正在尝试编写一个简单的函数,我可以调用它,它可以返回纬度,但我想避免向该函数传递任何参数。我如何将回调传递给client_location函数内部化?@brewster:这不会很好地工作,因为
getCurrentPosition
是异步的;因此,您不知道何时可以从
getCurrentPosition
获得结果。我建议您习惯异步回调方法,在使用AJAX和许多其他API时,您必须始终处理它。+1用于链接到
接口地理位置
。确切显示了为什么最终警报值是未定义的,而不是任意的。@Ray:我更喜欢提供权威参考,而不是期望人们相信我是权威。hm。我正在尝试编写一个简单的函数,我可以调用它,它可以返回纬度,但我想避免向该函数传递任何参数。我如何将回调传递给client_location函数内部化?@brewster:这不会很好地工作,因为
getCurrentPosition
是异步的;因此,您不知道何时可以从
getCurrentPosition
获得结果。我建议您习惯异步回调方法,在使用AJAX和许多其他API时,您必须始终处理它。