javascript 关闭不起作用?

标签 javascript closures

<分区>

我有以下代码:

for (var i in listings){
  var listing = listings[i];
  map.addMarker({
    lat: listing.GeographicLocation.Latitude,
    lng: listing.GeographicLocation.Longitude,
    title: listing.Title,
    click: function(e){
      (function(listing){
         console.log(listing.Title);
      })(listing);
    },  
  });
}

当我点击标记时,我总是会看到最后一个列表的标题。

最佳答案

for (var i in listings) {
  var listing = listings[i];
  map.addMarker({
    lat: listing.GeographicLocation.Latitude,
    lng: listing.GeographicLocation.Longitude,
    title: listing.Title,
    click: (function (listing) {
      return function(e) {
        console.log(listing.Title);
      };
    })(listing)
  });
}

您错误地放置了闭包 - 它需要立即执行,而不是在调用点击事件时执行。

关于javascript 关闭不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760894/

相关文章:

c++ - C 的替代方案,例如为 C++ 标记和转义嵌套循环

swift - 如何正确地等待功能快速完成?

javascript - 动态添加的对象属性未在 Javascript 中添加

javascript - 如果使用Vue.js显示="none",如何从数组中删除图像?

javascript - 自调用函数中递归函数的 setTimeout()

javascript - 为什么更改 InnerHtml 时此 div 会下拉?

javascript - IE8 中的 facebook 连接 javascript 错误

javascript - that = $(this) 表示 setTimeout 闭包未按预期工作

javascript - 谷歌地图缩放按钮未显示在窄屏幕上

javascript - 如何设置表中的默认值?