首页  >  文章  >  web前端  >  在循环中使用事件监听器时如何将正确的变量值传递给函数?

在循环中使用事件监听器时如何将正确的变量值传递给函数?

DDD
DDD原创
2024-10-25 08:23:29905浏览

How to Pass the Correct Variable Value to a Function When Using Event Listeners in Loops?

如何将 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn