当面试官给你出了下面这道题的时候,请问阁下如何应对?
如果你一下子没想出答案,建议您继续往下看,让我为你揭开这道面试题的隐藏知识点。
这道题,最重要的是如何计算 toString 函数的长度呢?
由这个问题引申出,我们如何计算一个函数的长度?
在JavaScript中,函数的 length 属性表示函数在声明时所期望的参数数量。这个数量包括形参的数量,且不包括 rest 参数(从 rest参数开始包括本身,后面的都不计算)和 默认参数。
以下是一些函数参数个数的示例:
这个函数没有定义任何参数,所以它的 length 属性为0。
这个函数定义了一个参数,所以它的 length 属性是1。
这个函数定义了三个参数,所以它的 length 属性是3
当函数有默认参数时, length 属性计数到第一个默认参数。尽管在该示例中定义了三个参数,但是由于第二个参数是默认参数,因此 length 值为1
对于使用rest parameters运算符的函数, length 属性只计算rest参数之前的参数。在这个例子中,虽然函数可以接受无限数量的参数,但 length 的值是2,只计算 ...rest 之前的参数。
让我们回到上面的面试题。123['toString'] 时,实际上是就是在调用 123 的 toString 方法, 也就是数字原型上的 toString方法,即 Number.prototype.toString(), 由于这个函数只接受一个参数 radix,所以它的 length 为 1.
所以
123['toString'].length === 1
因此 123['toString'].length + '123' === '1123'
你回答正确了吗?
欢迎关注,我们将分享更多的大前端资讯以及面试题
如果对你有帮助的话,欢迎点赞、关注➕、转发