Skip to content

arguments的介绍:

  • (1)arguments是javascript的一个内置对象,存储的是函数的参数,是一个伪数组,类似Array,但除了length属性和索引元素之外没有任何数组属性,例如,它没有push方法,但是可以转换为一个真正的数组;
js
var arr = Array.prototype.slice.call(arguments)
  • (2)arguments对象的长度是由实参个数决定而不是形参;

形参和实参:

形参:函数定义时,函数后面的参数,不能用var修饰。

实参:函数调用时,函数后面的参数。

js
var sum
function add(a, b) {
    sum = a + b
    console.log(sum)
}
add(1, 2)

上述的实例中:a,b是新参。函数调用时传进去的参数(1,2)是实参;

形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠。对于arguments的值都存在的情况下,两者值是同步的,但是针对其中一个无值的情况下,对于此无值的情形值不会得以同步。

  • (3)arguments.callee返回arguments对象所在的当前函数引用。(递归调用时推荐使用arguments.callee代替函数本身)

  • (4)arguments参数可以传递多个,与函数的定义无关;

js
function test(x, y) {
    for (var i = 0; i < arguments.length; i++) {
        alert(arguments[i])
    }
}
test(1, 2, 3, 4)

ECMAScript中的参数的内部是用一个数组来表示的,函数接收到的始终是这个数组,而不关系数组中包含哪些参数,因此不介意传进来多少参数。

  • (5)使用arguments对象可以判断实参的个数

    arguments.length(); 实参的个数

    arguments[i] 访问第i个参数

向一个函数传入不定数量的数值求和。

js
function addSum() {
    var sum = 0
    for (var i = 0; i < arguments.length; i++) {
        sum += arguments[i]
    }
    console.log(sum)
}
addSum(3, 5, 7) //15
addSum(2, 3) //5

Released under the MIT License.