我对 JavaScript 很陌生,不了解它的一些行为。我想写一个在Eloquent JavaScript书中找到的 reduce 函数的递归版本。那是我的代码:
function rec_reduce( fn, base, list ) {
if( list.length === 0 ) {
return base;
}
else {
rec_reduce( fn, fn( base, list[ 0 ] ), list.slice( 1 ) );
}
}
print( rec_reduce( Math.min, 100, [ 5, 3, 7, 2, 6, 5 ] ));
结果是:
undefined
为了看看发生了什么,我放了:
print( base );
作为函数的第一行,结果是:
100
5
3
3
2
2
2
undefined
谁能解释我为什么?