我们知道,需要函数参数个数,一般使用 arguments.length 即可。
但 Function 本来就有 length 属性,比如:
function test1(a,b,c) {
console.log(arguments.length); // 3
}
console.log(test1.length); // 3
它和 arguments.length 的区别是什么呢?
查了下Function length的MDN,发现它的定义是:函数的形参个数。也就是函数定义时的参数个数,而不是函数实际接受的参数个数。

比如:
function test() {
console.log("arguments:", arguments.length);
}
console.log(test.length); // 0
console.log(test("a", "b")) // arguments:2
所以函数的 length 属性只能得到形参个数,而无法得知实参个数。大部分场景还是使用 arguments.length 比较靠谱。
本文解析了JavaScript中函数的length属性,介绍了它与arguments.length的区别。length属性返回的是函数定义时的形参个数,而非实际传入的参数数量。
2576

被折叠的 条评论
为什么被折叠?



