【问题标题】:Javascript variables inherited by functions [duplicate]函数继承的Javascript变量[重复]
【发布时间】:2012-06-19 07:41:49
【问题描述】:

可能重复:
Javascript: closure of loop?

伪javascript:

for (i, i<10, i++) {
  new element.addEvent('click', function(){ alert(i) }).inject(dom)
}

当循环结束时,所有的 onclick 事件将触发警报,其 'final' 值为 i。让他们像添加 onclick 事件时那样提醒 i 的值的“正确”方法是什么?

当我说正确时,我的意思是我知道有几种方法可以实现这种行为,但我想知道标准(即可能遇到代码的人所期望的)方式。谢谢。

【问题讨论】:

  • 最常见问题的候选人...
  • @FlorianMargaine 还有 4 个结束投票。

标签: javascript


【解决方案1】:

使用闭包在每次迭代中捕获i 的值:

for (i; i<10; i++) {
    (function(i) {
         new element.addEvent('click', function(){ alert(i) }).inject(dom);
    }(i));
}

【讨论】:

  • 为什么投反对票?虽然它不是有效的 JavaScript,但它确实以 OP 使用的伪代码方式回答了这个问题。
  • 我投了反对票,因为他本可以关闭投票而不是回答这个问题。避免 SO 污染等。
  • @FlorianMargaine - 查看已关闭的人员列表。我是其中之一。虽然它是重复的,但我觉得它仍然可以帮助新的 SO 用户获得直接的答案。
  • 好的。删除了downvote :)
  • 当我们在这里时,我们不妨使用正确的for 语法。 (那些逗号在做什么?)
猜你喜欢
  • 2015-06-18
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 2017-01-10
  • 1970-01-01
  • 2015-05-25
相关资源
最近更新 更多