arguments

1.描述

1、是类数组,存储的是实参列表

function f1(a, b, c, d){
    console.log(arguments) //是实参列表
    console.log(typeof arguments); // object
    console.log(fn.length) //4
}
f1(1,2)

2、访问实参和检查实参个数

function f2() {
	console.log(arguments[0]); //name
	console.log(arguments.length); /2
}
f2('name', 'age');

3、callee属性

每个对象都有自己的属性,argumentscallee属性,返回被执行的Function对象

function f3() {
	console.log(arguments.callee === f3); //true
}
f3('name', 'age');

4、arguments的修改

在正常的模式下,arguments对象是允许在运行时进行修改的。

function f4() {
	arguments[0] = 'sex'
	console.log(arguments[0]); //sex
}
f4('name', 'age');

5、转化成真实数组

arguments是类数组对象,除了length属性和索引元素之外没有任何Array属性。例如,它没有pop方法。但是它可以被转换为一个真正的Array

function f4() {
	arguments[0] = 'sex'
	console.log(arguments[0]); //sex
}
f4('name', 'age');

2.应用

1、借用arguments.length可以来查看实参和形参的个数是否一致

function fn (a, b, c) {
    if (fn.length != arguments.length) {
        console.log('形参和实参的个数不一致');
    } else{
        console.log('形参和实参的个数一致');
    }
}
fn(1, 2);

2、借用arguments.callee来让匿名函数实现递归

let sum = function (n) {
    if (n == 1) {
        return 1;
    } else {
        return n + arguments.callee(n - 1); // 5 4 3 2 1
    }
}
console.log(sum(6)); // 21

3、遍历参数求和或者求最大值

function max () {
    var max = arguments[0];
    for (item of arguments) {
        if (item > max) {
            max = item;
        }
    }
    return max;
}
console.log(max(5, 3, 2, 9, 4)); // 9

3.总结

  • arguments是一个类数组对象,用来存储实参,有lengthcallee等属性;可以用arguments[0]这个形式访问实参;可以转换为真实数组。
  • arguments和函数相关联,其只有在函数执行时可用,不能显式创建。
  • arguments可以用来遍历参数;通过callee实现递归;也可以模拟函数重载。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值