函数柯里化小demo-含详细注释
柯里化连接数组的demo
function addArr(){
//首次执行将全部参数储存为数组
let arr = [...arguments]
//... 是ES6的展开运算符,推荐B站小马哥的讲解 arguments是函数所有参数的伪数组
function recursion(){
//后续递归,不断添加数组
arr.push(...arguments)//调用外部数据形成闭包
return recursion//返回自己,所以在外部又可以接着调用
}
//往recursion上挂载一个获得数据的方法. 说万物皆对象,函数也是对象的一种
recursion.getArr =()=> arr//ES6箭头函数
/*
recursion.getArr =()=> arr等价于
recursion.getArr =()=> {return arr}
*/
//返会递归函数,递归开始
return recursion
}
//因为返回的是一个函数,所以可以一直调用
console.log(addArr(1,2,3)(4,5)(6,4,7).getArr());// => (8) [1, 2, 3, 4, 5, 6, 4, 7]