如何将 JS 变量值传递给函数
迭代数组并为每个元素添加事件监听器时,循环的值计数器变量可能不会按预期保留。侦听器不捕获当前值,而是在循环终止后使用最终值。要解决此问题并将实际值(而不是引用)传递给函数,请考虑以下方法:
现代浏览器:
利用 let 或 const 关键字声明块作用域变量:
<code class="javascript">for (let i = 0; i < results.length; i++) { let marker = results[i]; google.maps.event.addListener(marker, 'click', () => change_selection(i)); }</code>
旧版浏览器:
创建一个单独的作用域,通过将变量作为参数传递给嵌套函数来保留变量的值:
<code class="javascript">for (var i = 0; i < results.length; i++) { (function (i) { marker = results[i]; google.maps.event.addListener(marker, 'click', function() { change_selection(i); }); })(i); }</code>
通过使用匿名函数并将变量作为参数传递,您可以有效地将其值传递给函数并创建一个闭包。这确保每个侦听器在创建时都可以访问正确的值。
以上是在循环中使用事件监听器时如何将正确的变量值传递给函数?的详细内容。更多信息请关注PHP中文网其他相关文章!