arrify源码笔记

  • 源码地址:arrify

  • 作用:Convert a value to an array ,即将一个值转化为数组形式

  • 安装:npm install arrify

  • 使用:import arrify from 'arrify'; arrify(value)

  • 源码解析:

    1. 先对value的值进行类型判断,可以分为几类,包括 null undefined , array, string , function

    2. 分别对不同的类型做处理:

      对于 null undefined类型,返回空数组 [ ]

      对于 array类型, 返回原数组

      对于 string 类型, 处理成数组,采用[value]的形式。这里的逻辑判断单独拿出来并且放在Symbol.iterator判断之前,是因为string类型具备 Iterator接口,执行 ... 会被分割成单独的字符。如下:

a = '123' // '123'
b = [a] // ['123']
c = [...a] // ['1', '2', '3']

对于可以遍历的类型,处理成数组,使用 [... xxx],这里主要涉及到一个知识点 Symbol.iterator 。源码中的 typeof value[Symbol.iterator] === 'function',用于判断 value 是否有遍历器属性,即是否可以被 for of 遍历出来。因为扩展运算符...会调用默认的iterator接口,所以这里要做判断。

  • 额外补充两个:对object对象做循环处理,可以使用 Object.keys(obj) 和 Objet.value(obj)

a = '123' // '123'
b = [a] // ['123']
c = [...a] // ['1', '2', '3']
  • 关于iterator 何时被调用,场景较多的就是 解构赋值扩展运算符 、for... of... 、 map() 、set() 。

更多分享可以关注公众号:前端怪咖

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值