你不知道的 JavaScript 系列中( 20 ) - 永远不要创建和使用空单元数组

Array 构造函数只带一个数字参数的时候,该参数会被作为数组的预设长度,而非只充当数组中的一个元素。这实非明智之举;一是容易忘记,二是容易出错。更为关键的是,数组并没有预设长度这个概念。这样创建出来的只是一个空数组,只不过它的 length 属性被设置成了指定的值

 

我们将包含至少一个 ”空单元“ 的数组称为 ”稀疏数组“

 

如果一个数组没有任何单元,但它的 length 属性中却显示有单元数量,这样奇特的数据结构会导致一些怪异的行为

 

 

 

 

b 在当前版本的 Chrome 显示为 [undefined, undefined, undefined],而 a 和 c 则为 [empty * 3],火狐显示的事 Array [<3 empty slots>]

 

更糟糕的是,a 和 b 的行为有时相同,有时又大相径庭,join 方法得到的结果是一样的
a.join('-') // "--"
b.join('-') //"--"

 

map 方法返回的结果却大相径庭

 

 



posted @ 2020-10-19 08:27  wzndkj  阅读(111)  评论(0编辑  收藏  举报