我定义了一个forEach函数,用于对数组中的所有项执行“某些操作”:
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
var numbers = [1, 2, 3, 4, 5], sum = 0;所以我可以这样做:
forEach(numbers, console.log);而且它会打印出所有的数字,因为'console.log(arrayi)‘会将数字打印到控制台。我明白这一点。
这就是我被困住的地方:如果我将下面的函数传递到操作参数的位置,而不是'console.log‘,那么函数在什么时候知道每个元素?
forEach(numbers, function(number) {
sum += number;
});
console.log(sum);
// 15如何对其进行评估?如果我在最后一个问题中传递了console.log,并且它仍然必须被计算为'console.log(arrayi)‘,并且在传递的参数旁边有'(arrayi)’代码,那么这不是也适用于整个函数吗,因为该函数就是参数?如下所示:
function(number) { sum += number; }(array[i])发布于 2014-10-07 03:47:48
在JavaScript中,函数是一等公民。这意味着它们可以被视为变量,就像字符串、数字等一样。
当你这样做的时候:
forEach(numbers, function(number) {
sum += number;
});您正在向forEach传递一个匿名函数。函数不是在一个变量中,而是动态创建的。在您的forEach函数中,action将包含您的匿名函数。
在for for循环中,为每个元素调用action函数。
https://stackoverflow.com/questions/26223650
复制相似问题