首页 > 关于函数部分求值

关于函数部分求值

   //下面eles里的数组apply,换成args.push(argumentss)为什么会没用
   //打印出来的是0[object Arguments][object Arguments]
   //args本来就是数组为什么要借用array的方法??
   var cont=(function(){
         var args=[];
         return function(){
         if(arguments.length===0){
            var money=0;
            for(var i=0;i<args.length;i++){
                money+=args[i];
            }
            return money;
         }else{
             [].push.apply(args,arguments);
             //args.push(arguments);
         }
         }
  })();
               
  cont(100);
  cont(200);
  console.log(cont());

这个归根结底还是应该去看看apply的声明,不过楼主说的那个用法,算是一种妙用而已,本身apply不是做这个用的。

参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply


如有错误,大神轻喷



//arguments
var cansu = [1,2,3,4];

var args = [0];

//楼主所说的方式
args.push(cansu);
console.log(JSON.stringify(args));


//还原args的值
args = [0];

//原来的方式
[].push.apply(args, cansu);
console.log(JSON.stringify(args));

区别就是楼主所说的那种方式 是把 arguments 这个对象PUSH进去了,
而后面的那个则是将 arguments 对象里面的各个内容PUSH进去了.

再直白一点就是

args.push([1,2,3]);

args.push(1,2,3);
的区别.

楼主可以了解一下 apply 这个方法的功能是什么.


从代码优化的角度上来讲, 代码里的 [].push.apply(args, arguments); 可以改为 args.push.apply(args, arguments);, .

【热门文章】
【热门文章】