深入理解 JavaScript 函数 length 属性的计算规则

作者:拾光时间:2026-10-24 15:25:25浏览:624

本文详细解析 JavaScript 中函数 length 属性的计算逻辑。length 属性返回函数定义时所需的参数个数,即第一个具有默认值之前的参数数量。剩余参数不计入 length,且默认参数后的参数也不影响该值。通过具体代码示例,厘清形参、默认参数与剩余参数对 length 的不同影响。

前言

本文将深入探讨 JavaScript 中函数 length 属性的具体计算方式,帮助读者掌握这一基础概念并巩固相关知识。

为什么

关注这一知识点源于昨晚社群中关于一道字节跳动面试题的讨论。

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

起初我也未能直接作答,虽然清楚面试官意在考察 Number 原型上的 toString 方法,但卡在 toString 函数的 length 属性值上,因此决定撰写此文进行解析。

到底是多少?

形参个数

首先通过示例观察 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

从示例可见,函数的 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

结论是:函数的 length 属性值等于第一个具有默认值的参数之前的参数个数。

剩余参数

若函数形参中包含剩余参数(Rest Parameters),其计算规则又是怎样的?


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

console.log(fn1.length) // 1

结果显示,剩余参数不参与 length 的计算。

总结

在总结之前,先公布前文提到的面试题答案:123['toString'].length + 123 = 124。

综上所述,length 是函数对象的一个属性,其值代表函数定义时必需的参数个数。具体而言,它等于第一个具有默认值的参数之前的参数数量;剩余参数的个数不包含在内。

至此,关于 JavaScript 函数 length 属性的介绍完毕。如需了解更多相关内容,欢迎查阅本站过往文章或继续浏览后续章节,感谢大家的支持。

作者最新文章