栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Javascript闭包中循环访问外部变量[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从Javascript闭包中循环访问外部变量[重复]

这里的问题是变量

item
随每个循环而变化。
item
在以后参考时,将使用其保留的最后一个值。您可以使用一种称为闭包的技术(本质上是一个返回函数的函数)来快速确定变量的范围。

    for (var i in this.items) { var item = this.items[i]; $("#showcasenav").append("<li id="showcasebutton_"+item.id+""><img src="/images/showcase/icon-"+item.id+".png" /></li>"); $("#showcasebutton_"+item.id).click(      // create an anonymous function that will scope "item"     (function(item) {        // that returns our function         return function() {         alert(item.id);         self.switchto(item.id);        };     })(item) // immediately call it with "item" );    }

旁注我看到您在这里有jQuery。它具有

$.each()
可以与数组一起使用的辅助函数,并且可以作为简单的for/each循环的快捷方式。由于作用域定义在此调用中的工作方式-您将不需要使用闭包,因为“item”在调用时已经是函数的参数,而不是存储在
var
父函数的作用域中,就像您的示例中那样。

$.each(this.items,function(i, item) {  $("#showcasenav").append("<li id="showcasebutton_"+item.id+""><img src="/images/showcase/icon-"+item.id+".png" /></li>");  $("#showcasebutton_"+item.id).click(function() {    alert(item.id);    self.switchto(item.id);  });});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407946.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号