簡體   English   中英

在函數外部訪問變量值

[英]accessing variable value outside of function

我的腳本中有2個函數。 功能1的目的是產生一個稱為“ mapsURL”的網址

第二個功能的目的是使用“ mapsURL”運行.ajax請求

但是我在第二個函數中訪問“ mapsURL”時遇到問題。 我在第一個函數中聲明了“ mapsURL”,而在函數中未聲明“ var”。 以我的理解,這應該使this成為全局值,並且我應該能夠在其他函數中訪問它。 我的理解不正確嗎?或者我在這里想念什么?

這是我的js:

注意:我刪除了本文的API密鑰,所以這不是問題

 $(document).ready(function (){ navigator.geolocation.getCurrentPosition(function (position) { var positionLat = position.coords.latitude var positionLon = position.coords.longitude mapsURL = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + positionLat + "," + positionLon + "&key=***mykeygoeshere***"; }); function getData (){ $.ajax({ url: mapsURL, dataType: 'json', success: function(response){ console.log(response); } }); }; getData(); }); 

getCurrentPosition是異步的。 它不會立即分配給mapsURL ,因此,當您同步調用getData ,尚未填充mapsURL

您應該在getCurrentPosition回調內調用getData這還將使您避免使用全局變量:

$(document).ready(function() {
  navigator.geolocation.getCurrentPosition(function(position) {
    var positionLat = position.coords.latitude
    var positionLon = position.coords.longitude
    var mapsURL = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + positionLat + "," + positionLon + "&key=***mykeygoeshere***";
    getData(mapsURL);
  });
  function getData(mapsURL) {
    $.ajax({
      url: mapsURL,
      dataType: 'json',
      success: function(response) {
        console.log(response);
      }
    });
  }
});

暫無
暫無

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

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