今天偶有所感,随及写了一个测试数据的生成工具,主要是因为在长期的开发过程中,需要给数据库添加合适的测试数据,供系统运行,在开发过程中,偶遇Arguments,说来惭愧,工作近乎一年,我竟然未曾相识,闲话少扯,撸码。
Arguments:可变长达的实参列表,实参对象(官方解释,来源权威指南P174)。
详解:当调用函数时传入的实参个数大于函数定义中的形参个数时,超过接收范围的实参将无法被形参接收,恰在此时,Arguments便应运而生,挺身而出。
举个栗子:
代码语言:javascript复制 function sum(){
//公众号关注:挨踢小子
var sum=0;
for(var i=0;i<arguments.length;i ){
sum =arguments[i];
}
return sum
}
console.log(sum(1,2,3,4)); //10
也就是说,当我们不定义形参时,同样可以调用定义函数,在函数内部通过arguments按顺序调用即可,类似数组。
代码语言:javascript复制arguments[0]
arguments[1]
arguments[2]
其参数也可以被设置为:
代码语言:javascript复制arguments[1] = 'Aiti';
注意:arguments对象不是一个 Array ,它类似于Array,除了length属性和索引元素之外没有任何Array属性。当然可以将其转化为一个真正的数组。
方法一:
代码语言:javascript复制 function fun(){
//公众号关注:挨踢小子
var arr =[];
for(var i = 0 ; i<arguments.length;i ){
arr.push(arguments[i]);
}
return arr;
}
console.log(fun(1,2,3,4));
方法二:
代码语言:javascript复制 function fun(){
//公众号关注:挨踢小子
return [].slice.call(arguments);
}
console.log(fun(1,2,3,4));
方法三:
代码语言:javascript复制function fun(){
//公众号关注:挨踢小子
return Array.from(arguments);
}
console.log(fun(1,2,3,4));