javascript - 访问函数外部的变量值

标签 javascript scope global-variables

我的脚本中有 2 个函数。函数 #1 的目的是生成一个名为“mapsURL”的 url

第二个函数的目的是使用“mapsURL”运行 .ajax 请求

但是,我在第二个函数中访问“mapsURL”时遇到问题。我在第一个函数中声明了“mapsURL”,而没有使用“var”。根据我的理解,这应该使 this 值成为全局值,并且我应该能够在其他函数内部访问它。我的理解不正确还是我在这里缺少什么?

这是我的js:

注意:我删除了这篇文章的 API key ,所以这不是问题

$(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);
      }
    });
  }
});

关于javascript - 访问函数外部的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50224708/

相关文章:

javascript - 寻找 Javascript/jQuery 事件触发器

javascript - 这两个例子的区别?

timer - 电晕 : timer. 取消()返回 "Attempt to index a nil value"

javascript - 为什么函数声明会覆盖全局对象的不可写属性?

wolfram-mathematica - 列出所有全局变量

compilation - 在 Jekyll 模板中设置全局变量

javascript - 从表中查找倒数第二行

javascript - 制作一个简单的 javascript 计算器,无法将两个属性加在一起

c++ - 内部链接和无链接之间的区别

php - 集中 php 全局变量?