我使用Marijn Haverbeke的书能言善辩的JavaScript学习Javascript和不理解下面的例子功能:一个减少在Javascript
function reduce(combine, base, array) {
forEach(array, function (element) {
base = combine(base, element);
});
return base;
}
function add(a, b) {
return a + b;
}
function sum(numbers) {
return reduce(add, 0, numbers);
}
的forEach
功能是一个他在本书中,较早引入了如下:
function forEach(array, action) {
for(var i = 0; i < array.length; i++)
action(array[i]);
}
现在,回到reduce
功能,我不明白是为什么,在sum
功能,0
作为传递base
至reduce
。这不奇怪吗?假设我尝试运行sum([1,2,3])
...在第一个循环中它看起来不像0 = add(0,1)
吗?我不明白。
它不是'0 = add(0,1)',它只是将变量(即'base')分配给一个新值。这并不奇怪,因为你可以在JavaScript中这样做。这不是Erlang或其他什么东西。 –