function的length,到底是怎么算的?

AI 概述
function 的 length 到底是多少?形参个数默认参数剩余参数总结 为什么我会想到这个知识点呢?因为这是一道字节跳动的面试题: 123['toString'].length + 123 = ? 说实话这道题,我一开始也没答出来。其实我是知道,面试官想考 Number 原型上的toString方法,但是我卡在了 toString 函数的 length 是多...
目录
文章目录隐藏
  1. function 的 length 到底是多少?
  2. 总结

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

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

说实话这道题,我一开始也没答出来。其实我是知道,面试官想考 Number 原型上的toString方法,但是我卡在了 toString 函数的 length 是多少这个难题上,所以才有了今天这篇文章。

function 的 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 = 4) {}

function fn4 (name, age = 4, 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,就是第一个具有默认值之前的参数个数

剩余参数

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

function fn1(name, ...args) {}

console.log(fn1.length) // 1

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

总结

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

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

以上关于function的length,到底是怎么算的?的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » function的length,到底是怎么算的?

发表回复