js中的arguments及其callee属性

arguments

在js的函数内,可以通过arguments来访问参数数组,第一个元素为arguments[0],第二个元素为arguments[1],以此类推。。
arguments是一个类数组对象,可以使用length属性来传递进来多少个参数。 即 arguments.length
arguments的值永远与对应命名参数的值保持同步。例如:

function add() {
    arguments[1]  = 10;
    console.log(arguments.length);
    console.log(arguments[0]+arguments[1]);
};
add(1,2); //结果为11,因为arguments[1]的值被修改为10。arguments长度为2
add(1); //结果为11,arguments.length等于1
add(); //结果为NaN, arguments的length为0
callee属性

arguments有一个callee属性,是一个指针,指向拥有这个arguments对象的函数。 在递归算法的函数里非常适用,例如:

function add(num) {
    if(num<=1) return 1;
    return num+arguments.callee(num-1);
    //return num+add(num-1); //这样写会增加函数的耦合性
};

add(10); //55

又学到一点~

以上。

参考:《Javascript高级程序设计》(第3版)

你可能感兴趣的:(js中的arguments及其callee属性)