js中函數的length是多少
前言
我今天給大傢講講function的length,到底是怎麼算的。希望大傢能從中學到東西,並且可以鞏固一下基礎。
為什麼
為什麼我會想到這個知識點呢?因為昨晚,在一個群裡,有一位同學在討論一道字節跳動的面試題
123['toString'].length + 123 = ?
說實話這道題,我一開始也沒答出來。其實我是知道,面試官想考Number原型上的toString方法,但是我卡在瞭toString函數的length是多少這個難題上。所以才有瞭今天這篇文章
到底是多少?
形參個數
咱們來看看下面這個例子
function fn1 () {} function fn2 (name) {} function fn3 (name, age) {} console.log(fn1.length) // 0 console.log(fn2.length) // 1 console.log(fn3.length) // 2
可以看出,function有多少個形參,length就是多少。但是事實真是這樣嗎?繼續往下看
默認參數
如果有默認參數的話,函數的length會是多少呢?
function fn1 (name) {} function fn2 (name = '林三心') {} function fn3 (name, age = 22) {} function fn4 (name, age = 22, gender) {} function fn5(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,就是第一個具有默認值之前的參數個數
剩餘參數
在函數的形參中,還有剩餘參數這個東西,那如果具有剩餘參數,會是怎麼算呢?
function fn1(name, ...args) {} console.log(fn1.length) // 1
可以看出,剩餘參數是不算進length的計算之中的
總結
總結之前,先公佈123[‘toString’].length + 123 = ?的答案是124
總結就是:length 是函數對象的一個屬性值,指該函數有多少個必須要傳入的參數,即形參的個數。形參的數量不包括剩餘參數個數,僅包括第一個具有默認值之前的參數個數
到此這篇關於js中函數的length是多少的文章就介紹到這瞭,更多相關js 函數的length內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!