首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个函数是如何传递给另一个函数的?

一个函数是如何传递给另一个函数的?
EN

Stack Overflow用户
提问于 2014-10-07 03:42:34
回答 4查看 108关注 0票数 0

我定义了一个forEach函数,用于对数组中的所有项执行“某些操作”:

代码语言:javascript
复制
function forEach(array, action) {
  for (var i = 0; i < array.length; i++)
  action(array[i]);
} 

var numbers = [1, 2, 3, 4, 5], sum = 0;

所以我可以这样做:

代码语言:javascript
复制
forEach(numbers, console.log);

而且它会打印出所有的数字,因为'console.log(arrayi)‘会将数字打印到控制台。我明白这一点。

这就是我被困住的地方:如果我将下面的函数传递到操作参数的位置,而不是'console.log‘,那么函数在什么时候知道每个元素?

代码语言:javascript
复制
forEach(numbers, function(number) {
  sum += number;
});

console.log(sum);
// 15

如何对其进行评估?如果我在最后一个问题中传递了console.log,并且它仍然必须被计算为'console.log(arrayi)‘,并且在传递的参数旁边有'(arrayi)’代码,那么这不是也适用于整个函数吗,因为该函数就是参数?如下所示:

代码语言:javascript
复制
function(number) { sum += number; }(array[i])
EN

Stack Overflow用户

发布于 2014-10-07 03:47:48

在JavaScript中,函数是一等公民。这意味着它们可以被视为变量,就像字符串、数字等一样。

当你这样做的时候:

代码语言:javascript
复制
forEach(numbers, function(number) {
  sum += number;
});

您正在向forEach传递一个匿名函数。函数不是在一个变量中,而是动态创建的。在您的forEach函数中,action将包含您的匿名函数。

在for for循环中,为每个元素调用action函数。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26223650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档