首页 > web前端 > js教程 > 正文

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

DDD
发布: 2024-10-25 08:23:29
原创
904 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!