String.length和Array.length
在js中,length属性常见于字符串和数组(类数组)中,如
"string".length //6
[1,2,3,4].length //4
Function.length
其实length属性还可以用于函数,来判断函数的长度,即函数中形参的个数,如
function fun1(a) { }
function fun2(a, b) { }
function fun3(a, b, c) { }
function fun4(a, b, c, d) { }
function fun5(...args) { }
function fun6(a, b=1, c, d) { }
console.log(fun1.length) // 1
console.log(fun2.length) // 2
console.log(fun3.length) // 3
console.log(fun4.length) // 4
console.log(fun5.length) // 0
console.log(fun6.length) // 1
注意:
...args
不计入形参个数- 设置了默认值的参数及其之后的所有参数都不计入形参个数,之前的仍旧计入
Arguments对象
另外,获取函数的实参需要借助arguments对象,如
function fn(a,b){
console.log(arguments.length) //3
console.log(arguments[2]) //3
return a+b
}
fn(1,2,3)
console.log(fn.length) //2
arguments 对象只能在函数内使用,它不是一个 Array,而是一个类数组对象,它类似于Array,但除了length属性和索引元素之外没有任何Array属性。