javascript - 当数组很大时如何定义函数数组

标签 javascript arrays

<分区>

我想定义一个函数数组,所以我尝试了下面的代码,但它没有预期的结果,因为循环中的 i 无法在其他地方检索到。

<script>
var f = []
for (var i=0; i<1000; i++){
    f[i] = function(){
        return i
    }
}
console.log(f[3]);
</script>

有写1000行代码定义函数的暴力破解方法,还有其他方法吗? 事实上,我在 Java 中遇到了这个问题,Array of function pointers in Java ,所以用 Java 或 JS 回答会很有帮助。

最佳答案

在循环内使用一个立即执行的函数来创建一个作用域,这样您就可以为每个函数实例拥有一个变量:

var f = []
for (var i=0; i<1000; i++){
  (function(i){
    f[i] = function(){
      return i;
    }
  })(i);
}
console.log(f[3]());

演示:http://jsfiddle.net/Guffa/rPKss/

关于javascript - 当数组很大时如何定义函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385150/

相关文章:

javascript - 单击时将类添加到 HTML 列表中的一个且只有一个元素

java - 为什么java数组文档不显示字段 "length"?

javascript - 将 redux 调度函数重写为组件

javascript - 如何实现/模仿 jQuery UI 的日期选择器?

javascript - 具有 angularjs ng-click 的 polymer

javascript - 在 jquery 中引用这个变量的区别

c - 在 C 中的数组末尾添加不需要的字符

java - 无法从 long[] 转换为 long

PHP:将字符串拆分为数组,例如没有分隔符的 explode

c - 对于数组,为什么 a[5] == 5[a]?