我读过this文章,但我有一些问题需要理解。
var funcs = [];
for (var i = 0; i < 3; i++) {
(function IIFE(arg) {
funcs[arg] = function output() {
console.log("My value: " + arg);
};
})(i);
}
for (var j = 0; j < 3; j++) {
funcs[j]();
}
如何解释此代码段的机制?
开始:i
的值为0
。 IIFE获取i
的值并将其存储在arg
。
funcs[0]
只是被分配到名为output
的函数。
第二次,当i
为1时,funcs [1]会得到一个全新的函数吗?这是假的吗?
.....
问题出在这里,funcs[0]();
如何知道arg
为0?事情如何互动?
功能output()
查找并要求IIFE function
提供所需的值?对?有人可以说哪个插图是正确的吗?
通过提供此图片,例如,数字1,我的意思是,当funcs[0]()
执行时,输出查找arg
,它找不到它,然后进入更高的范围并且找到它。例如,每个功能都有它自己的IIFE。我不确定这与Javascript甚至编程世界有多远,但帮助我理解它!