js巩固- 柯里化

含义:

把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,
并且返回接受余下的参数且返回结果的新函数的技术。

作用:

惰性求值

实例:

add(1,2,3)=>add(1)(2)(3)

function curry(fn, args = []){
    
    
	let len = fn.length
	return function(...cargs){
    
    
		args.push(...cargs)
		if(args.length < len){
    
    
			return curry.call(this, fn, args)
		}else{
    
    
			return fn.apply(this, args)
		}
	}
}

function sum(a, b, c) {
    
    
    return a + b + c;
}
console.log(curry(sum)(1, 2, 3)); // 6
console.log(curry(sum)(1, 2)(3)); // 6
console.log(curry(sum)(1)(2, 3)); // 6
console.log(curry(sum)(1)(2)(3)); // 6

Guess you like

Origin blog.csdn.net/m0_37285193/article/details/121743369