一行数组代码引发的思考

288 阅读1分钟

其实我只想记录一下,什么叫伪数组。我之前一直以为伪数组是可迭代对象来着,直到我看见了一行代码。

   const floorData = Array.from({length: promises.length}, ()=> {
        return { z:z1,s:s1}
      })

Array.from

from是数组的构造函数的 方法, 其作用是将伪数组或者可迭代对象转为js数组;接收三个参数,

Array.from(arrayLike[, mapFn[, thisArg]])

第一个就是 伪数组或者迭代对象,

第二个 是Array.map的一个回调函数mapFn, 修改数组里对应索引的值 给了这个参数就如同执行Array.from(obj).map(mapFn, thisArg)一样

第三个 是执行回调函数 mapFn 时 this 对象。

伪数组

mdn上有描述,我就直接搬过来了。

  • 伪数组对象(拥有一个 length 属性和若干索引属性的任意对象) 伪数组对象和可迭代对象完全没有一毛钱的关系啊。

再看前面的代码, 使用了from方法,传了两个参数,第一个是个对象,它有length属性,符合伪数组的定义,可见若干可以为零。第二个就是一个回调函数。

函数的length

我们知道函数的length代表了形参的个数。但是

image.png

所以,可选参数不计入length? 我们来试试

image.png

真的耶。看来Length属性并不是完全靠得住,或说length属性应是必要参数的个数