在现代浏览器中,您可以使用
let或
const关键字创建一个块作用域变量:
for (let i = 0; i < results.length; i++) { let marker = results[i]; google.maps.event.addListener(marker, 'click', () => change_selection(i));}在较旧的浏览器中,您需要创建一个单独的作用域,通过将其作为函数参数传递来将变量保存为当前状态:
for (var i = 0; i < results.length; i++) { (function (i) { marker = results[i]; google.maps.event.addListener(marker, 'click', function() { change_selection(i); }); })(i);}通过创建一个匿名函数并以变量作为第一个参数调用它,您将按值传递给函数并创建一个闭包。


![如何将JS变量的值(而不是引用)传递给函数?[重复] 如何将JS变量的值(而不是引用)传递给函数?[重复]](http://www.mshxw.com/aiimages/31/568216.png)
