我不明白这段代码的最后一行。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。