概述
今天在看函数式编程时,发现了一段有意思的代码,如下:
function a(x,y){}
a.length // 2
function b(x,y=2,z){}
b.length // 1
function c(x,...args){}
c.length //1
运行了一下,结果没错,知道length属性指的是形参的个数,但是不明白后两种函数为啥length的值为1。找了资料,弥补了这块小知识点的空缺,定义如下:
length 是JS函数对象的一个属性值,该值是指 “该函数有多少个必须要传入的参数”,即形参的个数
形参的数量不包括剩余参数个数,仅包括 “第一个具有默认值之前的参数个数”
看到整个定义后,就明白了为啥后两种的值为 1 了。
在没有默认值时,fn.length指的是形参的个数,如果有参数有默认值,那么就取第一个具有默认值之前的参数的个数。
多写几个例子看看?
function d(x,y=1,z,w){}
d.length //1
function e(x,y,z,w=3){}
e.length //3
function f(){}
f.length //0
function g(a=1,b=1,c=1){}
g.length //0
除了这个之外,延伸了解一下,函数的实参个数应该怎么获取?
arguments.length //在函数内部使用,表示实际传入的参数个数,在运行时计算,和形参个数无关
再来几个例子:
function a(x,y,z){
console.log(arguments.length); // 3
}(1,2,3)
function b(x,y=2){
console.log(arguments.length) // 3
}(1,2,3)
function c(x,y=2){
console.log(arguments.length) // 1
}(1)
function d(x,...args){
console.log(arguments.length) // 2
}(1,2)
function e(){
console.log(arguments.length) // 4
}(1,2,3,4)
JS中形参和实参的长度到这应该已经比较清楚啦,撒花。
最后
以上就是体贴钥匙为你收集整理的JS中函数的length属性以及arguments的length的全部内容,希望文章能够帮你解决JS中函数的length属性以及arguments的length所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复