函数柯里化就是将使用多个参数的函数转化为一系列使用一个参数的函数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>函数柯里化</title>
</head>
<body>
<script>
function add(a,b,c,d) {
return a+b+c+d;
}
function curry(func) {
//judge是一个匿名函数
let judge = (...args) => {
if (args.length === func.length){
return func(...args)
}
return (...arg) => judge(...args,...arg)
}
return judge
}
//更简洁的写法,其实上面的已经很简洁了
function curr(func){
let judge = (...args) => {
return args.length === func.length ? func(...args) : (...arg) =>judge(...arg,...args)
}
return judge
}
// let addCurry = curr(add)
console.log(addCurry(1)(2)(3)(4));
/*
*函数柯里化就是将使用多个参数的函数转换为一系列使用一个参数的函数的技术 额 技术??
*/
</script>
</body>
</html>
偏函数与函数柯里化有些类似。偏函数就是将一个 n 参的函数转换成固定 x 参的函数,剩余参数(n - x)将在下次调用全部传入。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>偏函数</title>
</head>
<body>
<script>
function add(a,b,c) {
return a+b+c;
}
function partial(func, ...args) {
return (...arg) => {
return func(...arg,...args)
}
}
let partialAdd=partial(add,1)
console.log(partialAdd)
console.log(partialAdd(2, 3));
</script>
</body>
</html>