1. 程式人生 > 程式設計 >js中函式的length是多少

js中函式的length是多少

目錄
  • 前言
  • 為什麼
  • 到底是多少?
    • 形參個數
    • 預設引數
    • 剩餘引數
  • 總結

    前言

    我今天給大家講講function的length,到底BwFOzir是怎麼算的。希望大家能從中學到東西,並且可以鞏固一下基礎。

    為什麼

    為什麼我會想到這個知識點呢?因為昨晚,在一個群裡,有一位同學在討論一道位元組跳動的面試題

    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就是多少。但是事實真是這樣嗎?繼續往下看

    預設引數

    如果有www.cppcns.com預設引數的話,函式的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(fn5www.cppcns.com.length) // 0

    說明了,function的length,就是第一個具有預設值之前的引數個數

    剩餘引數

    在函BwFOzir數的形參中,還有剩餘引數這個東西,那如果具有剩餘引數,會是怎麼算呢?

    function fn1(name,...args) {}
    
    console.log(fn1.length) // 1
    
    

    可以看出,剩餘引數是不算進length的計算之中的

    總結

    總結之前,先公佈123['toString'].length + 123 = ?的答案是124

    總結就是:length是函式物件的一個屬性值,指該函式有多少個必須要傳入的引數,即形參的個數。形參的數量不包括剩餘引數個數,僅包括第一個具有預設值之前的引數個數

    到此這篇關於中函式的length是多少的文章就介紹到這了,更多相關js 函式的length內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!