可变参数是很有用处的,例如c++的printf,sprintf,没这玩意,你想灵活的处理字符串是一件很难的事情。
不同于C++可变参数的函数,JavaScriptt的可变参数函数不需要声明任何形参,我对JavaScript不熟,也不知道这样说符不符合这门语言的规范,以C++做类比,只是想容易理解一些。
还是直接来个例子吧
function TestAgr(){
console.log(arguments);
}
TestAgr("a","b","c");
运行的结果是
{ '0': 'a', '1': 'b', '2': 'c' }
函数声明时,没有参数,这个arguments自动的存储了传入的实参,而且是用字典的方式。那么如果变换传入参数的类型会怎样呢?
TestAgr(1,true,4.3);
这次,传入三个参数,分别是整数,布尔,浮点,对应的结果
{ '0': 1, '1': true, '2': 4.3 }
传入的是什么,接收到的就是什么,那么再来点复杂的,会如何呢?
var list =[];
list.push('1');
list.push(3);
list.push(true);
var dic = {};
dic['1'] = 1;
dic['2'] = false;
dic['3'] = "sd";
TestAgr(1,list,dic);
对应的结果是
{ '0': 1,
'1': [ '1', 3, true ],
'2': { '1': 1, '2': false, '3': 'sd' } }
还是传入什么,接收到的就是什么,JavaScript利用闭包实现类似于面向对象中类的东东,这个玩意我还不熟悉,因此,这里就不进行验证了。可变参数最多可以传入多少个呢?我百度了一下,没有明确的说法,我自己试验10个是没有问题的。我想更多也应该是没有问题的,实际应用时再去关心吧。