arguments映射的问题

arguments映射的问题

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

  • 在正常的情况下为函数设置几个形参,调用时就传递几个实参,这时arguments会和参数一一对应形成映射关系
	function fun(a,b,c){
            c = 30
            console.log(a,b,c) // 1,2,30
            console.log(arguments) // Arguments(3)[1,2,30]
            arguments[1] = 20;
            console.log(arguments) //Arguments(3)[1,20,30]
            console.log(arguments[2]) // 30
 	}
        fun(1,2,3)
  • 但当我们的形参和实参没有一一对应的时候,那些没有传入实参的形参就不会和arguments形成映射
function fun(a,b,c){
            c = 30 
            console.log(a,b,c) // 1,2,30
            console.log(arguments) // Arguments(2)[1,2]
            console.log(arguments[2]) //undifined
 }
 fun(1,2)
  • 当我们在函数内开启严格模式时,形参和arguments就不会有映射关系
 function fun(a,b,c){
            'use strict'
            c = 30
            console.log(a,b,c) // 1,2,30
            console.log(arguments) //Arguments(2)[1,2,3]
            console.log(arguments[2]) //3
        }
        fun(1,2,3)

总结:当调用函数是传入的实参与函数的形参一一对应的时候,形参会和arguments产生映射关系,反之传入的实参没有与形参一一对应时,没有对应的形参就不会与arguments形成映射关系,还有当在函数中开启严格模式时,形参不会和arguments形成映射关系

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值