前言
大家好,我是林三心,我今天给大家讲讲
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