【发布时间】:2013-03-05 05:54:24
【问题描述】:
这是使用闭包更新数组的最佳方式吗?我在另一个网站上看到了类似的东西。我想知道创建的全局变量closure1。有没有办法在不创建全局的情况下做到这一点。
<script>
var closure1=Closure(0, 0);
function Closure(num, i) {
var num=num;
var index=i;
var anArray = [];
return function(num,index) {
anArray[index]=(num);
out.innerHTML=anArray;
}
}
</script>
<div id="d1" onclick=" closure1(2,0)">2 index 0</div>
<div id="d2" onclick=" closure1(5,3)">5 index 3</div>
<div id="d3" onclick=" closure1(4,1)">4 index 1</div>
<div id="d4" onclick=" closure1(9,7)">9 index 7</div>
<div id="out" >?</div>
【问题讨论】:
-
传递给 Closure() 的两个参数是干什么用的?它们的值保存在返回的匿名函数永远不会使用的局部变量中。
-
我把这些东西漏掉了,因为它与问题无关。基本上我正在从本地数组转移到闭包。实际的数组值将通过另一个函数而不是 onclick 推送到函数。
-
好的,但是如果您没有展示更接近真实代码的内容,我们将无法回答您的“这是最好的方法吗...”的问题。内联事件属性需要全局变量,但现在您说您实际上并没有使用它们,所以...
标签: javascript arrays closures