跳至主要內容
柯里化

柯里化

  1. 定义一个闭包变量,用来存储每次调用的参数
  2. 包裹目标函数之后返回一个新函数
  3. 调用新函数,每次传入的参数收集到闭包变量
  4. 如果闭包变量的长度到达指定长度,则调用目标函数并传入收集的参数,否则返回这个新函数
function currying(fn) {
	let args = []
	return function f(){
		args.push(...arguments)
		if(args.length >= 3){
			// deepcopy args
			const params = JSON.parse(JSON.stringify(args))
			args = []
			return fn.apply(null, params)
		}else{
			return f
		}
	}
}

Mr.He小于 1 分钟JavaScript柯里化