function a(x,y){} a.length // 2 function b(x,y=2,z){} b.length // 1 function c(x,...args){} c.length //1
length 是JS函數對象的一個屬性值,該值是指 “該函數有多少個必須要傳入的參數”,即形參的個數 形參的數量不包括剩余參數個數,僅包括 “第一個具有默認值之前的參數個數”
在沒有默認值時,fn.length指的是形參的個數,如果有參數有默認值,那么就取第一個具有默認值之前的參數的個數。
函數的實參個數應該怎么獲取?
arguments.length //在函數內部使用,表示實際傳入的參數個數,在運行時計算,和形參個數無關
例子:
function a(x,y,z){
console.log(arguments.length); // 3
}(1,2,3)
function b(x,y=2){
console.log(arguments.length) // 3
}(1,2,3)
function c(x,y=2){
console.log(arguments.length) // 1
}
總結來說就是:function.length 獲取的是形參的長度 而在函數內部定義的argument.length 獲取的是 實參的長度
