Javascript中的arguments对象
在Javascript中,函数参数可以通过arguments
对象访问。这个对象是一个类数组对象,包含了函数调用时所有传入的实参,可以用来访问函数调用时没有在形参列表中声明的参数。
arguments对象的基本用法
arguments
对象有如下属性和方法:
属性
- callee: 返回当前正在执行的函数的引用,一般用途较少。
- length: 表示传递给函数的参数的个数。注意,该属性是命名参数和不命名参数的总和,而与函数定义时声明的参数的个数无关。
方法
- arguments[i]:获取传递给函数的第i个参数。
- arguments.length:获取传递给函数的参数数量。
Function的apply和call方法可以用来调用函数时改变函数的上下文对象,同时还可以动态给函数传递参数,如:
function add(x, y){
return x + y;
}
console.log(add.apply(null, [1, 2])); // 输出 3
console.log(add.call(null, 1, 2)); // 输出 3
示例一: 不定参数求和
function sum(){
var total = 0;
for(var i = 0; i < arguments.length; i++){
total += arguments[i];
}
return total;
}
console.log(sum(1, 2, 3, 4)); // 输出 10
console.log(sum(1, 2)); // 输出 3
console.log(sum(4)); // 输出 4
console.log(sum()); // 输出 0
在这个例子中,sum
函数并没有声明形参,通过访问arguments
对象获取函数调用时所有传入的实参,然后进行求和。
示例二:获取传参默认值
function foo(a, b, c){
a = a || 1;
b = b || 2;
c = c || 3;
return a + b + c;
}
console.log(foo()); // 输出 6
console.log(foo(7)); // 输出 12
console.log(foo(7, 8)); // 输出 18
console.log(foo(7, 8, 9)); // 输出 24
在这个例子中,foo
函数有三个参数,但是函数可能被调用时没有传入任何实参,所以需要给参数初始化默认值。当参数没有传入时,||运算符会将其视为假值,因此可以用a = a || 1
的方式保证a
参数有默认值1
。同样地,b
和c
的默认值分别为2
和3
。可以看到,在不同的调用情况下,arguments
对象中包含的实参数量是不同的,但是函数能够通过不定数量的实参来获取并设定默认值。
总结
arguments
对象是Javascript函数中的一个非常强大的工具,可以动态获取传入的实参,可以方便地处理没有命名的实参,也可以实现不定数量实参的传递。但是,过度使用arguments
对象可能会让代码变得难以理解和维护,因此需要谨慎使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript中的arguments对象 - Python技术站