javascript - 在 javascript for 循环的每次迭代中声明一个新的唯一变量的好方法是什么?

标签 javascript google-maps

<分区>

我有以下 for 循环:

for (loc in locations){
    var newLoc = locations[loc].split(", ")
    var uniquevar = new google.maps.Marker({
    position: new google.maps.LatLng(newLoc[0], newLoc[1]),
        map: map,
        title: loc
    });
    google.maps.event.addListener(loc, 'click', function() {
        console.log(loc);
    });
};

我不打算在您单击它们时生成一堆 map 标记和 console.log 它们的名称 (loc)。但它们最终都会在控制台中记录位置日志中的最后一项。

我想这是因为它们都被命名为相同的东西

为什么会这样,我该怎么办?

最佳答案

如上所述,您需要关闭:

for (loc in locations){
  (function(loc){  
    var newLoc = locations[loc].split(", ")
    var uniquevar = new google.maps.Marker({
      position: new google.maps.LatLng(newLoc[0], newLoc[1]),
      map: map,
     title: loc
    });

    google.maps.event.addListener(loc, 'click', function() {
      console.log(loc);
    });
  })(loc);
};

关于javascript - 在 javascript for 循环的每次迭代中声明一个新的唯一变量的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11018808/

相关文章:

Swift 2 GMSPanoramaCallback 确定 Google 街景是否可用

javascript - Google Maps API v3,无法调用未定义的方法 "panTo"

javascript - 每个 td li 标签上的鼠标悬停选项菜单

javascript - 在(jquery?)循环中使用 ajax

javascript - 我如何从 mongodb 数据库获取所有文档?

javascript - 如何更改我的 AngularJS 服务以使用 Typescript?

javascript - 谷歌地图在ajax上成功

android - 使 TileOverlays 透明

c# - 谷歌地图在 htc one x 等高像素密度设备上显示相当模糊,有什么方法可以解决这个问题吗?

javascript - flex 布局 : show first element when two child elements are in the same row