1.什么是柯理化函数编程思想?
柯理化函数编程思想实质上就是利用闭包的保存功能,闭包形成的不被释放的上下文,可以预先存储一些东西,而这些东西就可以供其下级上下文使用,这种利用闭包预先存储的思想就是柯理化函数思想。
2.常考面试题:
简单题:完成如下需求
let res = fn(1, 2)(3)
console.log(res); //=>6, 1+2+3
完整解法:
// 基于ES6...剩余运算符拿到的参数是个数组,也可以使用arguments获取
// 但是arguments拿到的是个类数组,要想使用数组的方法还得先将他变为数组
// 因此推荐使用...剩余运算符
const fn = function fn(...params) {
// params:[1,2]
return function proxy(...args) {
// args:[3]
params = params.concat(args) //拼接数组
return params.reduce(function (result, item) {
// 数组求和
return result + item
})
}
}
通过改写箭头函数一行代码搞定:
const fn = (...params) => (...args) => params.concat(args).reduce((result, item) => result + item);
进阶题:
const