You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// 柯里化函数
function curry(a) {
return function(b) {
return function(c) {
return a + b + c;
}
}
}
function add(a, b, c) {
return a + b + c
}
add(1, 2, 3)
let addCurrying = curry(add)
// 调用柯里化函数
addCurrying(1)(2)(3) // 6
js函数柯里化的作用
主要为以下常见的三个用途:
延迟计算
参数复用
动态生成函数
模拟实现js函数柯里化
function curry(fn, args) {
// 获取fn函数的形参数
var length = fn.length;
var args = args || [];
return function() {
newArgs = args.conact(Array.prototype.slice.call(arguments));
// 当收集参数少于length,继续收集参数
if (newArgs.length < length) {
return curry.call(this, fn, newArgs);
} else {// 所有参数收集完毕,整体执行fn函数
return fn.apply(this, newArgs)
}
}
}
function multiFn(a, b, c) {
return a * b * c;
}
var multi = curry(multiFn);
multi(2)(3)(4);
multi(2,3,4);
multi(2)(3,4);
multi(2,3)(4);
二、反柯里化
什么是反柯里化?
反柯里化(unCurry),是扩大函数的适用性,使特定对象拥有的功能函数,可以被任意对象调用。
反柯里化使用
var test="a,b,c";
console.log(test.split(","));
var split=uncurrying(String.prototype.split); //[ 'a', 'b', 'c' ]
console.log(split(test,',')); //[ 'a', 'b', 'c' ]
反柯里化实现
function unCurry(fn) {
return function() {
var obj = [].shift.call(arguments);// 删除并返回第一项
return fn.apply(obj, arguments)
}
}
The text was updated successfully, but these errors were encountered:
GGXXMM
changed the title
JavaScript模拟实现js函数柯里化
JavaScript模拟实现函数柯里化
Jan 19, 2021
一、柯里化
什么是函数柯里化?
官方的说法
在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
简单的理解
柯里化是一种闭包的运用,分多次接收参数,延迟计算。
js函数柯里化使用
js函数柯里化的作用
主要为以下常见的三个用途:
模拟实现js函数柯里化
二、反柯里化
什么是反柯里化?
反柯里化(unCurry),是扩大函数的适用性,使特定对象拥有的功能函数,可以被任意对象调用。
反柯里化使用
反柯里化实现
The text was updated successfully, but these errors were encountered: