JavaScript函数中的arguments(js函数中的arguments,函数默认参数arguments)

简述:js中的函数大家都比较熟悉,今天来分享下函数中的默认参数arguments。js的函数参数和其他的语言有些不同,它并不介意你传进来多少个参数,以及参数的数据类型,即使你在定义函数时,只设置了两个形参,那么在调用这个函数时,你给他传递一个、两个,或者是其它四个、五个实参,它都能接收,之所以会这样是因为在函数参数内部是用一个数组来表示的,在函数体内是通过arguments对象来访问这个参数数组,从而获取传递给函数的每个参数。arguments对象只是与数组类似,但他并不是一个数组,可以把它叫做伪数组,你也可以把它叫做其它的都可以。

Arguments代码实例:

一、函数的默认参数arguments;

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

输出

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

二、当函数参数只有一个时;

  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开始。

四、当我们传递的实参个数小于形参的个数时;

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

 输出

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

五、当我们给形参赋值时;

修改形参

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

 输出

 修改arguments

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

  输出

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

小结:

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

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

补充:当我们传递的实参个数小于形参的个数时,赋值的形参值被改变,不会影响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);

 输出

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北城笑笑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值