-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
什么是元?元是指函数参数的个数,比如一个带有两个参数的函数被称为二元函数
function add(a, b) {
return a + b;
}
// 执行 add 函数,一次传入两个参数即可
add(1, 2) // 3
// 假设有一个 partial 函数可以做到局部应用
var addOne = partial(add, 1);
addOne(2) // 3
const partial = (fn, ...restArgs) => {
// 默认参数和新传递的参数进行组合,然后调用方法
return (...args) => func(...restArgs, ...args);
};
柯里化是将一个多参数函数转换成多个单参数函数,也就是将一个n元函数转换成n个一元函数。
局部应用则是固定一个函数的一个或者多个参数,也就是将一个n元函数转换成一个 n - x 元函数。
// 偏函数是柯里化的子集
function addParti(fn, ...args) {
return function(...newArgs) {
return fn(...args, ...newArgs);
}
}
const partial = function() {
const fn = Array.prototype.shift.call(arguments);
const arg1 = [...arguments];
return function() {
const arg2 = [...arg1, ...arguments];
return fn.call(this, ...arg2);
}
}
function Partial(fn: Function, ...args: any[]) {
return (...rest: any[]) => fn(...args, ...rest);
}
function partial(func, ...restArgs) {
return function(...args) {
return func.call(this, ...restArgs, ...args);
}
}
箭头函数:
function addParti(fn, ...args) {
return (...newArgs) => fn(...args, ...newArgs);
}
Metadata
Metadata
Assignees
Labels
No labels