js中function形参与实参数的获取length与arguments

在写代码的实际应用中,我们有时候需要获取函数的行参或者实参,下面就此问题做一下总结.

实际应用中获取实参可以在函数内部使用arguments

function test(){
    console.log(arguments)
}
test(1) 
// Arguments [1, callee: ƒ, Symbol(Symbol.iterator): ƒ]
test('a','b')
// Arguments(2) ['a', 'b', callee: ƒ, Symbol(Symbol.iterator): ƒ]

从上述代码可以看出,我们可以通过使用arguments来获取函数调用时实际传入的参数也就是实参.

那么如果获取行参呢?

下面我们来看一个函数的结构

function test(a,b){}
console.dir(test)

在这里插入图片描述
从上面函数的结构我们可以看到函数有一个length属性,这个属性就可以获取函数行参的数量,下面就这个length属性我们做一下总结:

官方解释:

一个 Function 对象的 length 属性表示函数期望的参数个数,即形参的个数。这个数字不包括剩余参数只包括在第一个具有默认值的参数之前的参数。相比之下,arguments.length 是局限于函数内部的,它提供了实际传递给函数的参数个数。

上面定义中“不包括剩余参数”的解释:

剩余参数语法允许我们将一个不定数量的参数表示为一个数组。
举例: function(…args){},这里的…args也就是一个剩余参数.

下面我们来用代码看看吧

function test(a, ...args){}
test.length // 1

然后我们再看“只包括在第一个具有默认值的参数之前的参数”这句话的理解,说白了就是给函数的参数初始化值

function test(a, b=100){}
test.length // 1

总结完毕!

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值