JS——柯里化函数

127 篇文章 2 订阅
111 篇文章 1 订阅

描述:

JS——柯里化函数

实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        /*
        *   柯里化函数,传入参数仅作为存储
        *   执行函数时,执行内容
        *
        *
        * */
       /* function curry() {
//           var arg=Array.from(arguments);
           var slice=Array.prototype.slice;
           var arg=slice.apply(arguments);
           var self=this;
           return function () {
               var arr=slice.apply(arguments);
               console.log(arr);
//               return  self.apply(null,arg.concat(arr))
           }
        }

       var fn=curry(10)();
       console.log(fn)*/
       
       Function.prototype.curry=function () {
           var arg=Array.from(arguments);
           var self=this;
           return function () {
               if(arguments.length===0){
                   return self.apply(null,arg);
               }
               arg=arg.concat(Array.from(arguments));
           }
       };
       
       function fns() {
           console.log(arguments);
       }
     var fn1=fns.curry();
     fn1(20);
     fn1(30);
     fn1(40);
     fn1();


      /* function curry(fn) {
            var arg=[];
           var slice=Array.prototype.slice;
           return function () {
               if(arguments.length===0){
                    fn.apply(null,arg);
               }else{
                   var arr=slice.apply(arguments);
                   arg=arg.concat(arr);
               }
           }
       }
        function getSum() {
            var slice=Array.prototype.slice;
            var arr=slice.apply(arguments);
            var sum=arr.reduce(function (sum,item) {
                return sum+item;
            });
            console.log(sum);
        }*/

        function curry(_fn) {
            var arg=[];
            var fn=_fn;
            return function () {
                if(arguments.length===0){
                    fn.apply(null,arg);
                }else{
                    var arr=Array.from(arguments);
                    arg=arg.concat(arr);
                    console.log("这次传入的参数是:"+arr.join(),"现在这个数组中一共存了:"+arg.join());
                }
            }
        }
        function getSum() {
            var arr=Array.from(arguments);
            var sum=arr.reduce(function (sum,item) {
                return sum+item;
            });
            console.log(sum);
        }
       var fn=curry(getSum);
        fn(10);
        fn(20);
        fn(30);
        fn();

    </script>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值