我在JS中遇到了一个有趣的代码,其中整数的阶乘是使用纯函数计算的。代码如下:
function factValues(n) {
return new Array(n-1).
fill(0).
map((_,i) => i + 2).
reduce((acc, e, i) => acc.concat([e*acc.slice(-1)[0]]),
[1]);
}
因此,如果我尝试 factValues(6(:我得到输出:[1,2,6,24,120,760]
有人可以解释我的代码吗?我不明白。
下划线用作占位符。Array.map
的语法如下:
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
在这种情况下,函数不关心当前值,只需要索引。必须添加占位符,否则无法使用索引值。
见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map