揭示那道让九成求职者犯懵的JavaScript面试题

发表时间: 2024-07-23 06:00

当面试官给你出了下面这道题的时候,请问阁下如何应对?

如果你一下子没想出答案,建议您继续往下看,让我为你揭开这道面试题的隐藏知识点。

这道题,最重要的是如何计算 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'

你回答正确了吗?

小结

欢迎关注,我们将分享更多的大前端资讯以及面试题

如果对你有帮助的话,欢迎点赞、关注➕、转发