Blu*_*ire 1 javascript closures pass-by-reference
我的代码看起来像这样:
var a = [];
for(var i = 0; i < 10; i++) {
a[i] = function() {
console.log(i);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它似乎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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26 次 |
| 最近记录: |