Function 的 length 属性

我们知道,需要函数参数个数,一般使用 arguments.length 即可。

但 Function 本来就有 length 属性,比如:

function test1(a,b,c) {
    
    
  console.log(arguments.length); // 3
}
console.log(test1.length); // 3

它和 arguments.length 的区别是什么呢?

查了下Function length的MDN,发现它的定义是:函数的形参个数。也就是函数定义时的参数个数,而不是函数实际接受的参数个数。

image.png

比如:

function test() {
    
    
  console.log("arguments:", arguments.length);
}
console.log(test.length); // 0
console.log(test("a", "b")) // arguments:2

所以函数的 length 属性只能得到形参个数,而无法得知实参个数。大部分场景还是使用 arguments.length 比较靠谱。

猜你喜欢

转载自blog.csdn.net/jexxx/article/details/128816817