簡體   English   中英

一般的javascript

[英]general 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 ##

您正在將回調傳遞給getCurrentPosition並且alert位於該回調內。 您的return position.coords.latitude也位於該回調中。 您的client_location函數返回getCurrentPosition返回的內容,而getCurrentPosition不返回任何內容

如果您想對緯度做一些事情,則必須在回調中完成; 您可以將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);
});

如果設備未返回地理位置,則未定義。 添加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()); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM