我试图更好地了解JavaScript。这是我从JavaScript函数闭包中读取的一段代码。
var funcs = [];
// create a bunch of functions
for (var i = 0; i < 3; i++) {
funcs.push(function() {
console.log(i);
})
}
// call them
for (var j = 0; j < 3; j++) {
funcs[j]();
}
该数组funcs
具有推回叫功能。我不为什么在J
循环funcs[j]()
中将调用此函数i
在控制台中打印出来。
我试图通过添加一些控制台消息来理解此顺序:
var funcs = [];
console.log("start");
for (var i = 0; i < 3; i++) {
console.log("i:" + i);
funcs.push(function(){
console.log(i);
})
}
console.log("J loop");
for (var j=0; j<3; j++) {
console.log("j:" + j);
funcs[j]();
}
不出所料,这3
三个功能都有。
我的问题是:如何funcs[j]()
调用funcs.push(...)
函数?我理解了funcs[j]
引用数组的j
元素funcs
。但是为什么有括号()
会调用该push(...)
函数呢?
function() {console.log(i);}
是一个表达式,其计算结果为一个记录为log的函数的值i
。
funcs.push
是一个向数组添加值的函数。
放置()
一个函数将调用该函数。
funcs.push(some_value)
调用该push
函数并将其some_value
作为值传递到数组中。
funcs.push(function() {console.log(i);})
将函数添加到数组。
的值funcs[0]
成为该函数。
放置()
一个函数将调用该函数。
funcs[0]()
调用作为数组中第一个值的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句