停止在闭包中通过引用传递

蓝色的火

我有看起来像这样的代码:

var a = [];
for(var i = 0; i < 10; i++) {
    a[i] = function() {
        console.log(i);
    }
}

不幸的是,似乎i是通过引用传递的,所以a输出10中的所有函数都是如此。如何使每个函数输出i创建时具有的值a[0]()给出0,a[1]()给出1,依此类推

编辑:澄清一下,我不想a存储0-9的值。我想a存储返回值0-9的函数。

加兹古尔

您需要调用一个函数(以创建一个捕获值的闭包),该函数将返回一个函数(您要最终获得的函数)。像这样的东西:

var a = [];
for (var i = 0; i < 10; i++) {
    a[i] = (function(value) {
        return function() {
            console.log(value);
        }
    })(i);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

闭包是通过引用捕获的?

来自分类Dev

如何在闭包中更改引用传递的数组的数据

来自分类Dev

通过值传递而不是通过引用JavaScript闭包-是否有任何非包装技术?

来自分类Dev

在Swift中传递闭包

来自分类Dev

在函数中传递闭包

来自分类Dev

通过引用传递的参数包

来自分类Dev

闭包中变量引用的异常行为

来自分类Dev

在Swift中对闭包的引用很少

来自分类Dev

如何停止通过引用存储在原型中的对象传递?

来自分类Dev

从 Groovy/Jenkins 中的类传递闭包

来自分类Dev

如何从 UIViewController 中删除传递的闭包

来自分类Dev

通过传递函数与传递匿名闭包的排序行为

来自分类Dev

为什么传递给map()的闭包没有引用,而传递给filter()的闭包却引用呢?

来自分类Dev

类型不匹配,解决了通过引用接受参数的闭包

来自分类Dev

计算传递闭包

来自分类Dev

通过传递闭包计算DAG中最近的顶点邻居

来自分类Dev

我以为我已将此引用传递给Javascript闭包中的私有函数,我认为错了

来自分类Dev

我可以让#selector引用Swift中的闭包吗?

来自分类Dev

如何在Swift中设置对闭包/函数的弱引用?

来自分类Dev

这种模式是否在闭包中引起循环引用?

来自分类Dev

借用闭包中的可变引用来对向量进行排序

来自分类Dev

在Haskell中通过引用传递?

来自分类Dev

在python中通过引用传递

来自分类Dev

在__clone中通过引用传递

来自分类Dev

在C ++中通过引用传递?

来自分类Dev

在Swift中传递和存储闭包/回调

来自分类Dev

在Swift中传递空闭包的优雅方式

来自分类Dev

将JavaScript传递给JavaScript中的闭包

来自分类Dev

将口才模型作为PHP中的闭包参数传递

Related 相关文章

热门标签

归档