2021-05-15 arguments对象的概念和方法

本文介绍了JavaScript函数调用时隐式传递的arguments对象,详细阐述了它的定义、特性及应用场景,包括如何访问实参、判断实参个数、实现递归和转换为数组等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.在函数调用时,浏览器会传递进两个隐式参数
  • 函数的上下文对象-- this
  • 封装实参的对象–arguments
1.arguments对象的定义
  • 每个函数都会自带一个arguments,arguments对象不能显式创建
  • arguments对象时所在对象的数组对象,封装的是实参
  • arguments对象有两个属性一个迭代器
- - 两个属性:
- - -  length属性:返回参数个数
- - -  callee属性:返回所在函数
- - 一个迭代器:Symbol
2.arguments对象的特性
2.1.arguments对象可以在函数内访问所在函数的实参
function fn(){
    console.log(arguments[0]);
    console.log(arguments[1]);
    console.log(arguments[2]);
}
fn(11,22,33);//11 22 33
2.2.正常模式下arguments对象可以在运行的时候修改,在严格模式下则不可以

正常模式:

    function fn(a, b) {
        arguments[0] = 10;
        arguments[1] = 20;
        return a + b;
    }
    console.log(fn(4, 6));//30

严格模式:

    function fn(a, b) {
        'use strict';
        arguments[0] = 10;
        arguments[1] = 20;
        return a + b;
    }
    console.log(fn(4, 6)); //10
2.3.使用arguments.length判断实参的个数
function fn(){
    console.log(arguments.length);
}
fn(2,3,4,5);//4
fn(1);//1
fn();//0
2.4.使用arguments.callee返回对应的原函数
2.5.arguments对象时类数组对象,需要通过slice和逐一填入新数组来转换成数组形式
var fn1=function(){
    console.log(arguments.callee==fn);//true
    console.log(arguments.callee=fn2);//false
}
var fn2;
fn1();
3.arguments的应用
3.1.查看实参和形参个数是否一致
function add(a,b){
    var realLen=arguments.length;
    var len=add.length;
    console.log(realLen,len);//3 2
    if(realLen==len) alert("一致");
    else alert("不一致");
}
add(11,22,33);//不一致
3.2.实现匿名函数的递归
var sum=function(n){
    if(n==1) return 1;
    else return n+arguments.callee(n-1);
}
console.log(sum(5));//15=5+4+3+2+1
3.3.传入数组的和
function add(){
    var sum=0;
    for(var i=0;i<arguments.length;i++){
        sum+=arguments[i];
    }
    return sum;
}
add(11,22,33);//66
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值