95%的人都回答不上来的问题:函数的length是多少?

95%的人都回答不上来的问题:函数的length是多少?为什么为什么我会想到这个知识点呢 下面是字节跳动的一道面试题 123 toString length 123 面试官想考 Number 原型上的 toString 方法 但是卡在了 toString 函数的 length 是

欢迎大家来到IT世界,在知识的湖畔探索吧!

95%的人都回答不上来的问题:函数的length是多少?



欢迎大家来到IT世界,在知识的湖畔探索吧!

为什么

为什么我会想到这个知识点呢?下面是字节跳动的一道面试题:

123['toString'].length + 123 = ?

欢迎大家来到IT世界,在知识的湖畔探索吧!

面试官想考Number原型上的toString方法,但是卡在了toString函数的length是多少这个难题上。

到底是多少?

形参个数

咱们来看看下面这个例子

欢迎大家来到IT世界,在知识的湖畔探索吧!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

说明了,functionlength,就是第一个具有默认值之前的参数个数

剩余参数

在函数的形参中,还有剩余参数这个东西,那如果具有剩余参数,会是怎么算呢?

欢迎大家来到IT世界,在知识的湖畔探索吧!function fn1(name, ...args) {} console.log(fn1.length) // 1

可以看出,剩余参数是不算进length的计算之中的

总结

总结之前,先公布123[‘toString’].length + 123 = ?的答案是124

总结就是:length 是函数对象的一个属性值,指该函数有多少个必须要传入的参数,即形参的个数。形参的数量不包括剩余参数个数,仅包括第一个具有默认值之前的参数个数

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/97599.html

(0)
上一篇 2天前
下一篇 2天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信