Array.prototype.slice.call(arguments,0); 上下调用模型

      var fn9 = (function () {
         var arr = {}; //缓存对象
         var counter = function (arr) { //计算函数//args也就是fn9(1, 2, 3, 4, 5);的 参数
           var sum = 0;
           //求和
           for (var i = 0; i < arr.length; i++) {
             sum += arr[i];
           }
   console.log("counter",sum);
           return sum;//生成属性名
         }
         return function () {
           //其实本质就是arguments这个对象使用了数组的slice这个方法,得到了参数构成的数组
           var args = Array.prototype.slice.call(arguments,0); //arguments转换成数组
   // console.log(args,"ar");
           var key = args.join(","); //将args用逗号连接成字符串//1,2,3,4,5
               console.log(key);
           var result, tSum = arr[key];//对象名1,2,3,4,5:  得到对象名
   // console.log(arr[key]);
   // console.log(tSum);
           if (tSum) { //如果缓存中已存在   
             console.log('从缓存中取:', arr) //打印方便查看
             result = tSum;
           } else {
             //重新计算,并存入缓存同时赋值给result
             result = arr[key] = counter(args);//  result的值来自counter
             console.log('存入缓存:', arr) //打印方便查看
             
           }
           return result;
         }
       })();
       console.log(fn9(1, 2, 3, 4, 5));  //return  15
   //     fn9(1, 2, 3, 4, 5);
   //    console.log( fn9(1, 2, 3, 4, 5, 6));//  21
   //     fn9(1, 2, 3, 4, 5, 8);
   //     fn9(1, 2, 3, 4, 5, 6);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值