前端:你知道数组的length,但是你知道函数的length嘛?-

前端:你知道数组的length,但是你知道函数的length嘛?

当你点开这篇文章的时候,你肯定也在想函数还会有length?数组的length我知道的啊arr.length不就是了嘛。可是函数的length是什么呢?函数有length吗?

const arr = [1,2,3]
console.log(arr.lenght) // 3

答案

先告诉你答案,函数还真有length,length 是函数对象的一个属性值,指该函数有多少个必须要传入的参数,即形参的个数。形参的数量不包括剩余参数个数,仅包括第一个具有默认值之前的参数个数。

前言

最近在浏览一些大厂面试题的时候看到了字节跳动的一道题目:

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

你知道这道题的答案吗,相信很多同学都是卡在toString函数的length是多少。就上面所说的函数的length是形参的个数,那么答案已经很明显了是:124

验证

1、形参个数:

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就是多少。但是事实真的是这样吗?继续往下看。

2、默认参数

如果有默认参数的话,函数的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,就是第一个具有默认值之前的参数个数

3、剩余参数

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

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

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

展开阅读全文

页面更新:2024-04-01

标签:数组   函数   字节   前言   剩余   个数   属性   题目   答案   参数

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top