JavaScript自学笔记(七)
arguments参数数组
JavaScript的函数不像其他大多数语言那样对向函数传递的参数有那么严格的要求。JavaScript函数不介意传递进多少个参数也不在乎参数的数据类型。因为传递的参数在内部用一个数组来表示,函数接收的也是这个数组,不关心数组里的元素,如何访问这个参数数组就要用到arguments对象。
arguments对象的调用
与数组类似,利用方括号加下标调用
function sayHello(){
alert("Hello " + arguments[0]);
}
sayHello("Rick","Morty");// Hello Rick
上面示例中,Rick是arguments的第一个参数下标为0,用arguments[0]调用。
arguments的length属性
和数组的length属性相同,可以返回arguments中有多少个元素。
function howManyArgs(){
alert(arguments.length);
}
howManyArgs("string",25);// 2
howManyArgs();// 0
howManyArgs(11);// 1
使用过程中的注意点
利用length属性结合判断语句可以对函数中接受不同参数数量实现各种功能
function doSomething(){
if(arguments.length == 1){
statement1;
}else if(arguments.length == 2){
statement2;
}
}
arguments对象可以和命名参数一起使用
function add(num1,num2){
if(arguments.length == 1){
alert(arguments[0] + num1);
}else if(arguments.length == 2){
alert(arguments[0] + num2);
}
}
add(10);// 20
add(10,20)// 30
注意:arguments对象中的值会自动反映到对应的命名参数,所以修改arguments[1]也会修改num2,但这两个值的内存空间是独立的,只是它们的值会同步。没有传递值的命名参数会被自动赋予undefined值。