函数式编程
函数式编程是一种编程范式,函数是第一等公民,函数可以出现在任何地方,比如说参数或者返回值等
函数柯里化
函数柯里化是指把具有多个参数的函数转化为接收一个参数的函数,并且返回一个新的函数,新的函数接收余下的参数,
可以理解为在柯里化的过程中固定了某些参数。
函数柯里化的实现代码
// 柯里化函数的实现
function hycurry(fn) {
let len = fn.length
return function curried(...args) {
// 判断接收参数的数量是否达到原函数的形参数量
if (args.length < len) {
// 返回函数,处理接下来的参数
return function (...args1) {
return curried(...args, ...args1)
}
} else {
// 返回函数执行的结果
return fn.call(this,...args)
}
}
}
function sum(num1, num2, num3) {
return num1+num2+num3
}
let newSum = hycurry(sum)
console.log(newSum(10)(20)(30)) //60
组合函数
组合函数是javaScript开发中函数的一种使用技巧。
当需要对某一个数据进行调用得到结果,并且是要通过调用多个函数依次执行得到结果,这些函数的关系是:上一个函数返回的结果是下一个执行函数的输入时。就可以使用用组合函数的技巧。
组合函数的实现代码
// 组合函数的实现,参数为不定长度
function hycompose(...fn) {
if (fn.length !== 0) {
return function (...args) {
let res = args
fn.forEach((cur, index) => {
if (index === 0) {
res=cur.call(this,...res)
} else {
res=cur.call(this,res)
}
})
return res
}
}
}
function add2(num) {
return num+2
}
function multiply(num) {
return num*4
}
let newCompose = hycompose(add2, multiply)
console.log(newCompose(2))