我们知道,需要函数参数个数,一般使用 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 比较靠谱。