怎么把变量传入事件函数中,求助

请问我这个代码
for(var i=0;i<markers.length;i++){
console.log(infoWindows[i]);
markers[i].addListener('click', function() {
console.log(infoWindows[i]);
infoWindows[i].open(map, this);
});
}
在第一次console的时候有值,第二次就没有了,为什么,我怎么把 infoWindows[i]的值传入事件函数中?

请问详细一点。。。看不明白代码 

请问详细一点。。。看不明白代码 

请问详细一点。。。看不明白代码 

难么你定义function的时候可以给定个参数啊,分开写,类似如下代码:

for(var i=0;i<markers.length;i++){
 console.log(infoWindows[i]);
 markers[i].addListener('click', onClick(infoWindows[i])));
 }
 function onClick(value) {
 console.log(value);
 value.open(map, this);
 })

做个闭包,使处理使用引用到的是当前遍历到的markers,要不最后你的i是循环后的最大值markers.length

for(var i=0;i<markers.length;i++){
    console.log(infoWindows[i]);
    markers[i].addListener('click', onClick(infoWindows[i]));
}
function onClick(value) {
    return function () {
        value.open(map, this);
    }
};