函数柯里化小demo-含详细注释

82 阅读1分钟

函数柯里化小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]