深入理解 JavaScript 函数 length 属性的计算规则
本文详细解析 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 属性的介绍完毕。如需了解更多相关内容,欢迎查阅本站过往文章或继续浏览后续章节,感谢大家的支持。
JS处理含Emoji或中文的字符串转数组乱码问题
2026-11-05 16:12:28
JS怎么使用展开运算符合并对象
2026-11-05 14:42:18
ES6+环境下判断JS对象为空的简洁写法
2026-11-05 12:12:23
怎么通过replacer函数自定义JS中JSON的格式化输出
2026-11-05 11:19:44
JS正则表达式基础:字面量与RegExp构造函数的区别及常用元字符
2026-11-05 11:16:58
