js中函数的length是多少

2022-04-15 0 607
目录
  • 前言
  • 为什么
  • 到底是多少?
    • 形参个数
    • 默认参数
    • 剩余参数
  • 总结

    前言

    我今天给大家讲讲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内容请搜索NICE源码以前的文章或继续浏览下面的相关文章希望大家以后多多支持NICE源码!

    免责声明:
    1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

    2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
    如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
    如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

    NICE源码网 JavaScript js中函数的length是多少 https://www.niceym.com/23711.html