JavaScript第 14 篇,JavaScript函数中的arguments(JS函数中的arguments,函数默认参数arguments)

JavaScript函数的arguments对象允许开发者访问函数接收到的所有参数,无论传入的数量和类型。arguments不是一个真正的数组,而是一个类似数组的对象,可以用来获取和设置函数调用时传入的额外参数。即使形参数量不足,arguments也能捕获所有实参,反之如果实参多于形参,未被形参接收的参数仍可通过arguments访问。修改arguments会影响到对应的形参值,反之亦然。

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

前言

        在 JavaScript 中,arguments 是一个类数组对象,它包含了函数调用时传入的所有参数。尽管它看起来像数组,但实际上并不是真正的数组,这意味着它不具有数组的所有方法如.push().pop()等。

        JavaScript 的函数参数和其他的语言有些不同,它并不介意你传进来多少个参数,以及参数的数据类。即使你在定义函数时,只设置了两个形参,那么在调用这个函数时,你给他传递一个、两个,或者是其它四个、五个实参,它都能接收,之所以会这样是因为在函数参数内部是用一个数组来表示的,在函数体内是通过 arguments 对象来访问这个参数数组,从而获取传递给函数的每个参数。

        arguments 对象只是与数组类似,但他并不是一个数组,可以把它叫做伪数组,你也可以把它叫做其它的都可以。简单记录一下


一. 属性特点

Arguments 的特定属性和特点,请看

  1. 长度属性arguments.length返回传入函数的实际参数数量。
  2. 索引访问:你可以通过索引(例如arguments[0])来访问各个参数。
  3. 命名参数:如果函数定义中有命名参数,你仍然可以通过arguments对象访问它们,即使这些参数没有在函数签名中出现。
  4. 可枚举性arguments对象的元素是可以枚举的,这意味着你可以使用for...in循环来遍历所有参数。

二. 默认参数

函数的默认参数 arguments,请看

1. 函数的默认参数arguments详细,请看

  function fn() {
    console.log(arguments);
  }
  fn()

输出:

可以看到,我们在调用函数时,没有传递任何参数,但是依然可以在函数内部,获取到数组形式的arguments对象。


三. 一个参数

当函数参数只有一个时,请看

1. 当函数参数只有一个,请看

  function fn(a){
    console.log(a);
    console.log(arguments[0]);
  }
  fn(2)

输出:

可以看到,我们可以通过 arguments[0] 来获取到传递进来的参数实例。


四. 实参大于形参

当我们传递的实参个数大于形参的个数时,请看

  function fn(a) {
    console.log(a);
    console.log(arguments);
    console.log(arguments[2]);
  }
  fn(2, 3, 4)

输出:

可以看到,在我们没有使用形参接收参数时,在函数内部依然可以使用 arguments 来获取到实参数据。arguments 接受到传递过来的所有数据,把他们都给装进了一个数组里,并且可以通过索引拿到相应的值,索引从0开始。


五. 实参小于形参

1. 当我们传递的实参个数小于形参的个数,请看

 function fn(a, b) {
    console.log(a);
    console.log(b);
    console.log(arguments[0]);
    console.log(arguments[1]);
  }
  fn(1);

输出:

可以看到,在没有传递实参时,在函数内部使用对应的形参和 arguments 都是undefined。


2. 当我们传递的实参个数小于形参的个数,并且赋值时,赋值的形参值被改变,不会影响 arguments 对象,因为 arguments 对象的大小是由传入的实参的个数决定的,并不是由定义的命名参数的个数决定的,没有传递值的形参将会自动被赋予 undefined值,跟没有定义直接使用一样,举个例子,请看

  function fn(a, b) {
    b = 7;
    console.log(a);
    console.log(b);
    console.log(arguments[0]);
    console.log(arguments[1]);
  }
  fn(1);

输出:


六. 修改形参

当我们修改形参和 arguments 时,请看

1. 修改形参

  function fn(a) {
    a = 5;
    console.log(a);
    console.log(arguments[0]);
  }
  fn(2, 3, 4);

输出:


2. 修改arguments

  function fn(a) {
    arguments[0] = 6;
    console.log(a);
    console.log(arguments[0]);
  }
  fn(2, 3, 4);

输出:

可以看到,通过修改形参的值和 arguments 的值,不管改的是两者中的哪一个,都会影响对应双方的值。


七. 本篇小结

1. 每一个函数,都有一个默认参数,参数是一个数组形式的arguments对象,可以通过数组下标来获取到对应的值。

2. 当我们传递的实参个数大于形参的个数时,依然可以通过arguments获取到对应的实参数据,而且修改形参对应的值,arguments的值也会更新,反之亦然。

创作不易,感觉有用,就一键三连,感谢(●'◡'●)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北城笑笑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值