具有回调功能的Javascript数组

Shaohao Lin

我试图更好地了解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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有返回功能的正确回调

如何在Python中具有类似于Javascript回调的功能

具有回调功能的驱动程序

Node Twitter库具有多种回调功能

Kivy Python-具有部分回调功能

JavaScript回调功能故障

带有回调的功能

JavaScript 中具有真值的回调函数

具有复杂计算的异步回调Javascript

如何构建JavaScript回调队列并执行具有最终回调的队列

值不会传递给带有回调的数组-JavaScript

具有异步功能的JavaScript数组

有没有功能来测试在js中具有回调的对象实例?

SetTimer(具有回调功能)是否通过启动新线程来工作?

Matplotlib动画;在推送模式下进行动画处理,而不具有回调功能

具有回调功能的AIO异步I / O-寻找最佳方法

即使具有正确的回调,此单击功能仍在执行

Javascript Promise单功能回调

PHP数组到JSON具有带有回调函数的参数

$(this)在animate()回调中但具有setTimeout

具有回调行为的jQuery .attr()

Pinvoke-来自C ++的回调,函数之间传递的数组具有意外的大小

Map.forEachLayerAtPixel回调函数具有一个空的rgba数组

回调循环中的Javascript数组变异

on change事件后的Javascript回调具有部分页面刷新

如何检查在Javascript中作为参数传递的回调函数是否具有参数?

调用退出错误后,具有回调功能的节点Cron变得无法排队握手

在Wordpress中使用CMB2添加具有自定义回调功能的自定义元框?

Q_oper8在子进程中具有回调功能,可将数据返回到邮件处理