一 基本方法:
function fn(obj) { switch(obj.length){ case 3: return obj.length; break; default: return false; break; } } fn({ first: 1, second: 2, third: 3 });
二 arguments
arguments虽然不是数组,但可以当作数组使用,下标由 0 开始,所以:
arguments[0] 表示接收的第一个参数
arguments[1] 表示接收的第二个参数
转成数组:var args = Array.prototype.slice.call(arguments);
//写一个累加求和的函数 function sum(){ var result=0; for(var i=0;i<arguments.length;i++){ result+=arguments[i]; } return result; } console.log(sum(2,3,4));//9 console.log(sum(1,10,100,1000));//1111 //arguments的callee属性是用来引用当前正在执行的函数,这对未命名的函数调用自身非常有好处。 //采用arguments.callee属性实现递归函数 var result =function(x){ if(x<=1) return1; return x*arguments.callee(x-1); };
arguments是javascript的保留字之一
三 ES6就更方便
function foo(...args) { console.log(args); }
三个点(...)在es6中,有两个含义
- 用在形参中, 表示传递给他的参数集合, 类似于arguments, 叫不定参数. 语法格式: 在形参面前加三个点( ... ) 不定参数只能放在最后面且只有一个
- 用在数组前面,可以把数组的值全部打散,展开,叫展开运算符. 语法格式: 在数组面前加三个点( ... )