一、偏函数
将程序中已知值和目标函数转化为一个等待未知值而执行的函数。初衷:将n元函数转化为n - x元函数。
柯理化函数初衷:将n元函数转化为n个一元函数,当然也可以穿多个参数。
function test(a,b,c){
}
function partial(){
}
let computor = partial(test,a);
封装Function.prototype上的偏函数方法
Function.prototype.partial = function(){
let outterArgs = [].slice.call(arguments),
originFoo = this;
return function(){
let innerArgs = [...arguments],
combinedArgs = outterArgs.concat(innerArgs); //居然吧() 打成 []
return originFoo.apply(originFoo, combinedArgs)
}
}
function test (a,b,c){
return a + b + c
}
let partialTest = test.partial(1,6);
console.log(partialTest(8))
二、惰性函数
函数的执行分支后,在第一次调用函数时会执行,过程中原函数被覆盖为另一种函数,下一次调用时,不再经过执行的分支。本身有多个功能,第一次执行后,选择特定功能改变自身。
function getTimeStamp (){
let time = (new Date()).getTime();
getTimeStamp = function(){
return time
}
return getTimeStamp()
}
应用场景:
当函数受不同外界因素影响,使用惰性函数,可以避免多次执行函数分支,比如封装添加事件监听函数。