我不明白这段代码的最后一行。callbacks.add(() => print(i));对我来说似乎很明显:添加将i打印到array的匿名函数。

但是.forEach((c) => c());我听不懂。
据我所知,=>将函数的标题与主体分开,因此对我来说它看起来像函数声明。但是然后看起来像为每个函数都声明了这个函数-但这是胡说八道。

var callbacks = [];
for (var i = 0; i < 2; i++) {
  callbacks.add(() => print(i));
}
callbacks.forEach((c) => c());

最佳答案

(c) => c()用一个无类型的参数c定义一个匿名函数。为列表中的每个项目调用的函数执行c引用的回调函数。另外,(c) => c()函数在其主体中仅包含一个语句c(),因此,使用=>-胖箭头表示法将其缩短。否则,它可以写为(c) { c(); }

有关详细信息,请参见anonymous functions

08-24 22:15