Arguments(函数参数对象)的属性和使用

Arguments(函数参数对象)

arguments[ ]函数参数的数组
Arguments一个函数的参数和其他属性
Arguments.callee当前正在运行的函数
Arguments.length传递给函数的参数的个数

 

Arguments对象只在函数体中定义。

arguments
arguments[n]

虽然技术上说来,它不是数组,但Arguments对象有带编号的属性,这些属性可以作为数组元素,而且它有length属性,该属性声明了数组元素的个数。它的元素是作为参数传递给函数的值。元素0是第—个参数,元素1是第二个参数,以此类推。所有作为参数传递的值都会成为Arguments对象的数组元素,无论函数声明中是否有这些参数的名字。

arguments[]数组只在函数体内定义。

function functionname(argument_name_list) // 函数定义语句
{
    body 
} 
function (argument_name_list) { body } // 未命名的函数直接量,JavaScript 1.2引入
functionname(argument_value_list)      // 函数调用

argument_names...

任意多个字符串参数,每个字符串命名一个或多个要创建的Function对象的参数。

arguments.callee

属性arguments.callee引用当前正在运行的函数。它给未命名的函数提供了一种自我引用的方式。该属性只在函数体内被定义。

//一个未命名的函数直接量使用callee属性引用它自身
// 以便它能够递归

var factorial = function(x) {
    if (x < 2) return 1;
else return x * arguments.callee(x-1);
}
var y = factorial(5);  // 返回 120

 

 

arguments.length

 

Arguments对象的属性length声明了传递给当前函数的参数的个数。该属性只在函数体内被定义。

注意:这个属性声明的是实际传递给函数的参数个数,而不是期望传递的参数个数。还要注意该属性不具备Array.length属性的专有行为。

// 使用Arguments对象来检查是否正确传递了#参数

function check(args) {
    var actual = args.length;           //参数的实际个数
    var expected = args.callee.length;  //期望的参数个数
    if (actual != expected) {           //如果他们不匹配,则抛出异常
        throw new Error("Wrong number of arguments: expected: " +
                         expected + "; actually passed " + actual);
    }
}
//一个演示如何使用以上函数的函数
function f(x, y, z) {
    check(arguments);  // 检查参数个数是否正确
    return x + y + z;  // 继续使用函数
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值