当前位置: 首页 > Web前端 > JavaScript

95%的人都答不上来:函数的长度是多少?

时间:2023-03-27 01:54:00 JavaScript

前言大家好,我是林三鑫,今天给大家讲讲如何计算一个函数的长度。希望大家能从中有所收获,巩固基础。为什么我会想到这个知识点呢?因为昨晚在一个群里,有个同学在讨论一道面试题123['toString'].length+123=?老实说,我一开始并没有回答这个问题。其实我知道面试官想测试Number原型上的toString方法,但是我卡在了toString函数的长度问题上。那为什么今天的文章是多少?让我们看看下面的例子functionfn1(){}functionfn2(name){}functionfn3(name,age){}console.log(fn1.length)//0console.log(fn2.length)//1console.log(fn3.length)//2可见length是函数的形参个数。但事实真的如此吗?继续看默认参数。如果有默认参数,函数的长度是多少?functionfn1(name){}functionfn2(name='林三鑫'){}functionfn3(name,age=22){}functionfn4(name,age=22,gender){}functionfn5(name='林三鑫'三鑫',年龄,性别){}console.log(fn1.length)//1console.log(fn2.length)//0console.log(fn3.length)//1console.log(fn4.length)//1console.log(fn5.length)//0表示函数的长度是第一个默认值之前的参数个数。其余参数属于函数的形式参数。如果还有剩余的参数,那么如果有剩余的参数会如何计算呢?functionfn1(name,...args){}console.log(fn1.length)//1可以看出其余参数不计入length的计算。总结前,先公布123['toString'].length+123=?答案是124。总结就是:length是函数对象的一个??属性值,是指函数必须传入多少个参数,即形参的个数。形参的个数不包括剩余参数的个数,只包括第一个有默认值的参数之前的个数。结语我是林三鑫,一个狂热的前端新手程序员。如果你有上进心,喜欢前端,想学前端,那我们可以交个朋友,一起钓鱼哈哈,摸摸鱼群,加我,请注意[思想]