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

如何从 JavaScript 闭包访问循环中的外部变量?

Patricia Arquette
发布: 2024-10-20 08:57:31
原创
814 人浏览过

How to Access Outside Variables in Loops from JavaScript Closures?

从 JavaScript 闭包访问循环中的外部变量

访问循环内声明的变量时会出现问题,特别是稍后引用此类变量时在异步回调中。为了举例说明,请考虑以下代码片段:

<code class="javascript">for (var i in this.items) {
    var item = this.items[i];
    // ...
}</code>
登录后复制

在这种情况下,item 变量将随着每次循环迭代而改变。当稍后引用 item 时,它将保存数组中最后一项的值。

解决方案:使用闭包

解决此问题的方法包括使用闭包,它创建返回其他函数的函数。通过使用闭包,item 变量的作用域可以不同,如下所示:

<code class="javascript">for (var i in this.items) {
    var item = this.items[i];
    // ...
    $("#showcasebutton_"+item.id).click(
        (function(item) {
            return function() {
                alert(item.id);
                self.switchto(item.id);
            };
        })(item)
    );
}</code>
登录后复制

替代方案:jQuery 的 $.each() Helper

如果 jQuery 可用, $.each() 帮助器可以用作简单 for/each 循环的简写。由于作用域在其函数调用中的工作方式,它减少了对闭包的需求:

<code class="javascript">$.each(this.items,function(i, item) {
    // ...
    $("#showcasebutton_"+item.id).click(function() {
        alert(item.id);
        self.switchto(item.id);
    });
});</code>
登录后复制

以上是如何从 JavaScript 闭包访问循环中的外部变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

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