Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单的javascript for循环没有按照我认为应该的方式运行 对于(var i=0;i_Javascript_Google Maps - Fatal编程技术网

简单的javascript for循环没有按照我认为应该的方式运行 对于(var i=0;i

简单的javascript for循环没有按照我认为应该的方式运行 对于(var i=0;i,javascript,google-maps,Javascript,Google Maps,您必须私有化i: for (var i=0; i<Gmaps.map.markers.length; i++) { google.maps.event.addListener(Gmaps.map.markers[i].serviceObject, 'click', function(object){ alert(Gmaps.map.markers[i]); }); }; for(var i=0;它很管用。哇。我并不声称自己是这方面的专家,但我已经在这方面修修补补了大约一

您必须私有化i:

for (var i=0; i<Gmaps.map.markers.length; i++) {
  google.maps.event.addListener(Gmaps.map.markers[i].serviceObject, 'click', function(object){
    alert(Gmaps.map.markers[i]); 
  });
};

for(var i=0;它很管用。哇。我并不声称自己是这方面的专家,但我已经在这方面修修补补了大约一年,私有化的概念从未出现过。奇怪。谢谢!循环没有作用域,但函数有作用域。我几乎总是使用.map而不是for,如果可以的话。使用“Gmaps.map.markers.map(function)”(mark,i){”,“Gmaps.map.markers[i]”变成了“mark”,而“i”是自动的和私有的。
for (var i=0; i<Gmaps.map.markers.length; i++) {
 (function(i){
  google.maps.event.addListener(Gmaps.map.markers[i].serviceObject, 'click', function(object){
    alert(Gmaps.map.markers[i]); 
  });
 }(i));
};