关于length的那些事(面试可能遇到版)

一提到length,相信大家能想到的第一个就是数组或字符串了,但并不只有这两个才有length,那么下面,我们就开始讲解了(如有问题,可以私信或评论)。

重点在第一个标题的第三点和第二个标题哦

一、拥有length的数据有哪些

首先我们先总结一下哪些数据才有length

1.数组/字符串

这两个想必也不用多说了,直接上代码展示了

const arr = [1,2,3]
const str = '123'
console.log(arr.length)//3
console.log(str.length)//3

2.函数的内置对象arguments

在我们函数中(除箭头函数)都有内置对象arguments,我们先看看arguments中都有哪些数据

function a() {
    console.log(arguments)
}
a()

打印结果如下:

从图片中我们也可以看出内置对象是包含length这个属性的(其它属性在本次便不多讲了)

那么什么数据才能修改内置对象的length呢,是函数的实参个数

以下进行代码展示以及输出结果

function a(c) {
    console.log(arguments.length)
}
a(1, 2, 4)//3
a(1, 2, [1, 2, 3, 9])//3
a(1, 2, { name: 1, age: 19 })//3
a(1, 2, '123')//3

以上是我所能想到能传输的数据,但通过结果也可以看出:

实参中的数据与length无关,函数内置对象的length只与实参的个数有关

3.函数的length

第二个也许很比较冷门,那么函数就更冷门了

function a() {}
console.dir(a)//dir是详细打印某个数据

打印结果如下

在函数中同时拥有length这个属性,那么这个属性是随什么改变呢?

二、函数中的length

上面我们有讲过在函数中是有length的,那么现在我们就去讲以下length是随什么改变的

首先,这是mdn对此的解释

那么通过以上的阅读,相信大家也有所了解了,下面我们开始进入正题

面试可能会遇到

function fn1(a,b) {}
function fn2(a,b = 2) {}
function fn3(a = 2,b) {}
function fn4(a, ...arr) {}
console.log(fn1.length)
console.log(fn2.length)
console.log(fn3.length)
console.log(fn4.length)

大家可以根据上面mdn的解释先思考一下会是什么结果。

.

.

.

.

.

.

结果如下

console.log(fn1.length)//2
console.log(fn2.length)//1
console.log(fn3.length)//0
console.log(fn4.length)//1

第一个

结果为2想必不出大家的以外了;

第二个

结果主要根据函数中的length只包括在第一个具有默认值的参数之前的参数;

第三个

结果同上上面的加粗,大家也能分析除原因了

第四个

结果的主要根据则是函数中的length不包括剩余参数

以上便是本次的主要内容了

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值