前言
大家好,我是林三心,我今天給大家講講
function
的
length
,到底是怎麽算的。希望大家能從中學到東西,並且可以鞏固一下基礎。
為什麽
為什麽我會想到這個知識點呢?因為昨晚,在一個群裏,有一位同學在討論一道字節跳動的面試題
123['toString'].length + 123 = ?
說實話這道題,我一開始也沒答出來。其實我是知道,面試官想考
Number
原型上的
toString
方法,但是我卡在了
toString函式的length是多少
這個難題上。所以才有了今天這篇文章
到底是多少?
形參個數
咱們來看看下面這個例子
functionfn1 () {}
functionfn2 (name) {}
functionfn3 (name, age) {}
console.log(fn1.length) // 0
console.log(fn2.length) // 1
console.log(fn3.length) // 2
可以看出,
function
有多少個形參,
length
就是多少。但是事實真是這樣嗎?繼續往下看
預設參數
如果有預設參數的話,函式的
length
會是多少呢?
functionfn1 (name) {}
functionfn2 (name = '林三心') {}
functionfn3 (name, age = 22) {}
functionfn4 (name, age = 22, gender) {}
functionfn5(name = '林三心', age, gender) { }
console.log(fn1.length) // 1
console.log(fn2.length) // 0
console.log(fn3.length) // 1
console.log(fn4.length) // 1
console.log(fn5.length) // 0
說明了,
function
的
length
,就是
第一個具有預設值之前的參數個數
剩余參數
在函式的形參中,還有
剩余參數
這個東西,那如果具有
剩余參數
,會是怎麽算呢?
functionfn1(name, ...args) {}
console.log(fn1.length) // 1
可以看出,剩余參數是不算進
length
的計算之中的
總結
總結之前,先公布
123['toString'].length + 123 = ?
的答案是
124
總結就是:
length
是函式物件的一個內容值,指該函式有多少個必須要傳入的參數,即形參的個數。形參的數量不包括剩余
參數個數
,僅包括
第一個具有預設值
之前的參數個數
結語
如果你覺得此文對你有一丁點幫助,點個贊,鼓勵一下林三心哈哈。