js中函數(shù)的length是多少
前言
我今天給大家講講function的length,到底是怎么算的。希望大家能從中學(xué)到東西,并且可以鞏固一下基礎(chǔ)。
為什么
為什么我會(huì)想到這個(gè)知識(shí)點(diǎn)呢?因?yàn)樽蛲?,在一個(gè)群里,有一位同學(xué)在討論一道字節(jié)跳動(dòng)的面試題
123['toString'].length + 123 = ?
說(shuō)實(shí)話(huà)這道題,我一開(kāi)始也沒(méi)答出來(lái)。其實(shí)我是知道,面試官想考Number原型上的toString方法,但是我卡在了toString函數(shù)的length是多少這個(gè)難題上。所以才有了今天這篇文章
到底是多少?
形參個(gè)數(shù)
咱們來(lái)看看下面這個(gè)例子
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有多少個(gè)形參,length就是多少。但是事實(shí)真是這樣嗎?繼續(xù)往下看
默認(rèn)參數(shù)
如果有默認(rèn)參數(shù)的話(huà),函數(shù)的length會(huì)是多少呢?
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
說(shuō)明了,function的length,就是第一個(gè)具有默認(rèn)值之前的參數(shù)個(gè)數(shù)
剩余參數(shù)
在函數(shù)的形參中,還有剩余參數(shù)這個(gè)東西,那如果具有剩余參數(shù),會(huì)是怎么算呢?
function fn1(name, ...args) {}
console.log(fn1.length) // 1
可以看出,剩余參數(shù)是不算進(jìn)length的計(jì)算之中的
總結(jié)
總結(jié)之前,先公布123['toString'].length + 123 = ?的答案是124
總結(jié)就是:length 是函數(shù)對(duì)象的一個(gè)屬性值,指該函數(shù)有多少個(gè)必須要傳入的參數(shù),即形參的個(gè)數(shù)。形參的數(shù)量不包括剩余參數(shù)個(gè)數(shù),僅包括第一個(gè)具有默認(rèn)值之前的參數(shù)個(gè)數(shù)
到此這篇關(guān)于js中函數(shù)的length是多少的文章就介紹到這了,更多相關(guān)js 函數(shù)的length內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 一篇文章教你JS函數(shù)繼承
- JavaScript基礎(chǔ)系列之函數(shù)和方法詳解
- JavaScript sleep睡眠函數(shù)的使用
- php中對(duì)內(nèi)置函數(shù)json_encode和json_decode的異常處理
- 如何讓你的JavaScript函數(shù)更加優(yōu)雅詳解
- JavaScript中的50+個(gè)實(shí)用工具函數(shù)小結(jié)
- 關(guān)于JavaScript回調(diào)函數(shù)的深入理解
- JavaScript中子函數(shù)訪問(wèn)外部變量的3種解決方法
- javascript函數(shù)式編程基礎(chǔ)
相關(guān)文章
小發(fā)現(xiàn)之淺談location.search與location.hash的問(wèn)題
下面小編就為大家?guī)?lái)一篇小發(fā)現(xiàn)之淺談location.search與location.hash的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
js實(shí)現(xiàn)黑色簡(jiǎn)易的滑動(dòng)門(mén)網(wǎng)頁(yè)tab選項(xiàng)卡效果
這篇文章主要介紹了js實(shí)現(xiàn)黑色簡(jiǎn)易的滑動(dòng)門(mén)網(wǎng)頁(yè)tab選項(xiàng)卡效果,可實(shí)現(xiàn)簡(jiǎn)單的鼠標(biāo)滑過(guò)tab項(xiàng)切換對(duì)應(yīng)菜單的功能,涉及javascript鼠標(biāo)事件控制頁(yè)面元素的遍歷與樣式改變實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
前端圖片懶加載的原理與3種實(shí)現(xiàn)方式舉例
圖片懶加載又稱(chēng)圖片延時(shí)加載、惰性加載,即在用戶(hù)需要使用圖片的時(shí)候加載,這樣可以減少請(qǐng)求,節(jié)省帶寬,提高頁(yè)面加載速度,相對(duì)的,也能減少服務(wù)器壓力,下面這篇文章主要給大家介紹了關(guān)于前端圖片懶加載的原理與3種實(shí)現(xiàn)方式的相關(guān)資料,需要的朋友可以參考下2023-03-03
JS實(shí)現(xiàn)勻速運(yùn)動(dòng)的代碼實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)勻速運(yùn)動(dòng)的代碼實(shí)例,有需要的朋友可以參考一下2013-11-11
原生javascript+css3編寫(xiě)的3D魔方動(dòng)畫(huà)旋扭特效
這篇文章主要介紹了原生javascript+css3編寫(xiě)的3D魔方動(dòng)畫(huà)旋扭特效的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03
js調(diào)用父框架函數(shù)與彈窗調(diào)用父頁(yè)面函數(shù)的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇js調(diào)用父框架函數(shù)與彈窗調(diào)用父頁(yè)面函數(shù)的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
Javascript實(shí)現(xiàn)Array和String互轉(zhuǎn)換的方法
這篇文章主要介紹了Javascript實(shí)現(xiàn)Array和String互轉(zhuǎn)換的方法,涉及JavaScript中toString方法與split方法的使用技巧,需要的朋友可以參考下2015-12-12
JavaScript模板引擎應(yīng)用場(chǎng)景及實(shí)現(xiàn)原理詳解
這篇文章主要介紹了JavaScript模板引擎應(yīng)用場(chǎng)景及實(shí)現(xiàn)原理,結(jié)合實(shí)例形式詳細(xì)分析了javascript模版引擎的具體應(yīng)用場(chǎng)景、實(shí)現(xiàn)原理、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-12-12

