js中函數(shù)的length是多少
前言
我今天給大家講講function的length,到底是怎么算的。希望大家能從中學(xué)到東西,并且可以鞏固一下基礎(chǔ)。
為什么
為什么我會(huì)想到這個(gè)知識(shí)點(diǎn)呢?因?yàn)樽蛲?,在一個(gè)群里,有一位同學(xué)在討論一道字節(jié)跳動(dòng)的面試題
123['toString'].length + 123 = ?
說實(shí)話這道題,我一開始也沒答出來。其實(shí)我是知道,面試官想考Number原型上的toString方法,但是我卡在了toString函數(shù)的length是多少這個(gè)難題上。所以才有了今天這篇文章
到底是多少?
形參個(gè)數(shù)
咱們來看看下面這個(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ù)的話,函數(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
說明了,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ù)訪問外部變量的3種解決方法
- javascript函數(shù)式編程基礎(chǔ)
相關(guān)文章
小發(fā)現(xiàn)之淺談location.search與location.hash的問題
下面小編就為大家?guī)硪黄“l(fā)現(xiàn)之淺談location.search與location.hash的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06js實(shí)現(xiàn)黑色簡易的滑動(dòng)門網(wǎng)頁tab選項(xiàng)卡效果
這篇文章主要介紹了js實(shí)現(xiàn)黑色簡易的滑動(dòng)門網(wǎng)頁tab選項(xiàng)卡效果,可實(shí)現(xiàn)簡單的鼠標(biāo)滑過tab項(xiàng)切換對(duì)應(yīng)菜單的功能,涉及javascript鼠標(biāo)事件控制頁面元素的遍歷與樣式改變實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08前端圖片懶加載的原理與3種實(shí)現(xiàn)方式舉例
圖片懶加載又稱圖片延時(shí)加載、惰性加載,即在用戶需要使用圖片的時(shí)候加載,這樣可以減少請(qǐng)求,節(jié)省帶寬,提高頁面加載速度,相對(duì)的,也能減少服務(wù)器壓力,下面這篇文章主要給大家介紹了關(guān)于前端圖片懶加載的原理與3種實(shí)現(xiàn)方式的相關(guān)資料,需要的朋友可以參考下2023-03-03JS實(shí)現(xiàn)勻速運(yùn)動(dòng)的代碼實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)勻速運(yùn)動(dòng)的代碼實(shí)例,有需要的朋友可以參考一下2013-11-11原生javascript+css3編寫的3D魔方動(dòng)畫旋扭特效
這篇文章主要介紹了原生javascript+css3編寫的3D魔方動(dòng)畫旋扭特效的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03js調(diào)用父框架函數(shù)與彈窗調(diào)用父頁面函數(shù)的簡單方法
下面小編就為大家?guī)硪黄猨s調(diào)用父框架函數(shù)與彈窗調(diào)用父頁面函數(shù)的簡單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11Javascript實(shí)現(xiàn)Array和String互轉(zhuǎn)換的方法
這篇文章主要介紹了Javascript實(shí)現(xiàn)Array和String互轉(zhuǎn)換的方法,涉及JavaScript中toString方法與split方法的使用技巧,需要的朋友可以參考下2015-12-12JavaScript模板引擎應(yīng)用場景及實(shí)現(xiàn)原理詳解
這篇文章主要介紹了JavaScript模板引擎應(yīng)用場景及實(shí)現(xiàn)原理,結(jié)合實(shí)例形式詳細(xì)分析了javascript模版引擎的具體應(yīng)用場景、實(shí)現(xiàn)原理、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-12-12