add
- 科里化执行
function add(...args1) {
const array = [...args1]
function fn(...args2) {
array.push(...args2)
return fn
}
fn.toString = function () {
return array.reduce((p, c) => p + c, 0)
}
return fn
}
alert(add(1)(2))
alert(add(1)(2)(3,4))
alert(add(1)(2,3,4))
alert(add(1)(2,3,4)(5)(6,7))
high
写高阶函数high
- 传入参数等于需要参数个数就返回数据
- 否则不返还,等后续填入后再执行
function high(fn) {
const length = fn.length
const array = []
function inFn(...args) {
array.push(...args)
if (array.length >= length) {
const temp = array.splice(0, length)
return fn(...temp)
}
return inFn
}
return inFn
}
var fn1 = high(function (a, b, c) {
return a + b + c
})
fn1(1)(2, 3)
fn1(1)(2)(3)
fn1(1, 2, 3)
var fn2 = high(function (a, b) {
return a + b
})
fn2(2, 3)
fn2(2)(3)