我使用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或其他什麼東西。 –