柯里化函数

来自百度百科:柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。

可能上面的话比较抽象,但是用代码实现去理解是很明了的↓↓↓

<!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
    <body>
        <script type="text/javascript">
            function currey(fn){
                var arr=[];
                return function(){
                    if(arguments.length>0){
                        arr=arr.concat([].slice.call(arguments));
                        return arguments.callee;
                    }else {
                        return fn(arr)
                }
            };
            }
            function getSum(arr){
                var sum= arr.reduce((value,item)=>{
                    return value+item
                })
                return sum
            }
            function getProduct(arr){
                var sum=arr.reduce((value,item)=>{
                    return value * item
                })
                return sum
            }
            var sum=currey(getProduct);
            sum(1,2);
            // sum(2,3,4);
            sum(1,2)(3)
            var s=sum();
            console.log(s);
        </script>
    </body>
</html>