js中的arguments特点。

js参数与大多其他语言的参数有所不同,js不介意传进来多少个参数,也不在乎传进来的是什么类型。即:你定义只有两个参数的方法,你在调用的时候未必一定要传递两个参数。可以随意 解析器不会报错。
原因:js的参数在内部是用一个数组来表示的,函数接受的时候永远都是这个数组,而不关心数组中包含哪些参数。多少都无所谓。所以js没有重载

argunment[]特点:

  • 在函数体中可以使用argumentsf对象来访问这个参数数组。
  • arguments对象与数组相似但是不是数组 它可以使用数组的表现形式。arguments[i]
  • 参数可以与argument一起使用,也可以互换使用 argument[]的值永远与对应参数名的值保持同步
  • argument[]与对应的参数名访问的内存空间不是相同的,它们的内存空间是独立的。
  • 单向影响:修改命名参数不会影响aegument[]的所对应的值。
  • argument[]对象的长度是由传入参数的个数决定的,不是由定义的参数个数决定的。
  • 没有传递值的命名参数将自动被赋予undefined值。例: 形参两个 实参一个。
  • 如果传入参数少于命名参数,那命名参数与arguments是不会同步的
<script>
/*测试arguments组*/
function f(a,b,c){
    //测试:argument[]对象的长度是由传入参数个数决定的。
    console.log( "arguments的长度 = "+arguments.length);
    // 测试 没有传递值的命名参数将自动被赋予undefined值。例: 形参两个 实参一个
    console.log( "c没有实参 c= "+c);
    
    //测试: argument[]的值永远与对应参数名的值保持同步
    console.log("传递来的形参a:a="+a);
    arguments[0] = 2;
    console.log("arguements[0]改变: a="+a);
    a = 3;
    console.log("a改变: arguments[0]="+arguments[0]);
    a = function fn(){}
    console.log("a改变为方法: arguments[0]="+arguments[0]);
   
    //测试:单向影响:修改命名参数不会影响aegument[]的所对应的值。
     //待补充  : 不理解这句话 还望赐教

    // 测试 :如果传入参数少于命名参数,那命名参数与arguments是不会同步的
    console.log("传递来的形参C: c=" +c);
    arguments[2]=4;
    console.log("c未赋值 arguments[2]改变: arguments[2]="+arguments[2]);
    console.log("c未赋值 arguments[2]改变: c="+c);
    c = 5;
    console.log("c未赋值 c改变: arguments[2] ="+arguments[2]);
}
f(1,1);
</script>

测试结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值