13. 偏函数
小于 1 分钟
13. 偏函数
偏函数就是将一个 参数的函数转换成固定 参的函数,剩余 个参数将在下次调用全部传入。
样例如下:
function add(a, b, c) {
return a + b + c;
}
const partialAdd = partial(add, 1)
console.log(partialAdd(2, 3))
partial()
函数实现如下:
const partial = (fn, ...args) => (...arg) => fn(...args, ...arg)
有时候我们想要一个占位符功能,使用 placeholder
占据一个位置,然后在下一次传递即可:
用起来就像这样:
function add(a, b, c) {
return a + b + c;
}
const partialAdd2 = partial(add, 1, placeholder, 3)
console.log(partialAdd(2))
代码实现:
const placeholder = Symbol('placeholder')
function partial(fn, ...args) {
return (...arg) => {
let curr = 0
return fn(...args.map(val => (val === placeholder) ? arg[curr++] : val), ...arg.slice(curr))