JavaScript Arguments对象

Arguments对象是在函数执行时期动态创建的,它是一个类似数组的对象,可通过索引获取成员,拥有length属性。

arguments.length 表示实参总数,与此对应的行参总数可通过funcName.length获得。

arguments.callee 是对函数本身的引用,在ES5中严格模式下禁止使用。参考callee

把arguments转换成数组[].slice.call(arguments, 0)。

function foo() {
    var args = [].slice.call(arguments, 0);
    console.log(args); // [1, 2, 3]
}
foo(1, 2, 3);

arguments对象是不能被delete的。

arguments与实参之间是引用关系。

实参是无法被delete的,而arguments的成员可以delete,但是delete之后,实参和arguments成员的引用关系也就丢失了。

function foo(x) {
    delete arguments; // false 

    arguments[0] = 11; // arguments[0]: 11, x: 11

    x = 22; // arguments[0]: 22, x: 22

    delete arguments[0]; // delete 之后丢失引用
    x = 33;  // arguments[0]: 33, x: 33

    return [x, y, z];
}

foo(1);

现在还没有评论

留下您的大名