面试题:arguments对象

arguments对象是JavaScript中用于访问函数传入参数的类数组对象。在非严格模式下,如果函数包含剩余参数、默认参数或解构赋值,arguments不会跟踪参数值的变化。文章通过示例解释了在不同情况下,arguments对象如何与实参交互,影响函数内部变量的值。

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

arguments:

arguments 是一个对应于传递给函数的参数的类数组对象。

下列代码输出结果:

function side(arr) {
   arr[0] = arr[2];  
}

function a(a, b, c = 3) {
   c = 10;
   side(arguments); // 此时的arguments参数a为1,b为1,c为1
   return a + b + c;
}
console.log(a(1, 1, 1)) // 12

解析:
当非严格模式中的函数包含剩余参数、默认参数和解构赋值,那么arguments对象中的值不会跟踪参数的值(反之亦然)。

1 . 当函数a 中默认参数 c = 3 时,arguments对象中的值不会跟踪参数的值
此时 arguments 接收的参数为 [1,1,1]

在这里插入图片描述
那么当函数side执行后,a的值为1;
最终输出结果就为 12

2 . 若当函数a 中形参未接收默认参数时,那么arguments对象将会跟踪参数的值,此时 arguments 接收的参数为 [1,1,10]
在这里插入图片描述
那么当函数side执行后,a的值为10;
最终输出结果就为 21

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值