欢迎来到Altaba的博客…
今天遇到一个一个需求,怎么知道函数的行参的数量,查阅了解到可以通过function.length拿到,进而对比了下和argument.length的区别。
// 当参数是 行参是扩展运算符时候
function argus(...arg) {
return arguments.length;
}
function argus2(a, b, c) {
return arguments.length;
}
console.log(argus.length); // 0
console.log(argus()); // 0
console.log(argus(1)); // 1
console.log(argus(1,2,3)); // 3
console.log(argus2.length); // 3
console.log(argus2()); // 0
console.log(argus2(1)); // 1
console.log(argus2(1,2,3)); // 3
实验证明得出结论
1. 当参数是正常定义好的参数的时候,这时候获取到的func.length为定义行参的数量,arguments.length 的长度是实际传入的参数。
2. 当参数为扩展运算符时候,func.length始终为0
希望能给大家带来一些帮助,欢迎评论斧正!