//下面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);
, .