function a(x,y){} a.length // 2 function b(x,y=2,z){} b.length // 1 function c(x,...args){} c.length //1
length 是JS函数对象的一个属性值,该值是指 “该函数有多少个必须要传入的参数”,即形参的个数 形参的数量不包括剩余参数个数,仅包括 “第一个具有默认值之前的参数个数”
在没有默认值时,fn.length指的是形参的个数,如果有参数有默认值,那么就取第一个具有默认值之前的参数的个数。
函数的实参个数应该怎么获取?
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 }
总结来说就是:function.length 获取的是形参的长度 而在函数内部定义的argument.length 获取的是 实参的长度