Array 构造函数只带一个数字参数的时候,该参数会被作为数组的预设长度,而非只充当数组中的一个元素。这实非明智之举;一是容易忘记,二是容易出错。更为关键的是,数组并没有预设长度这个概念。这样创建出来的只是一个空数组,只不过它的 length 属性被设置成了指定的值
我们将包含至少一个 ”空单元“ 的数组称为 ”稀疏数组“
如果一个数组没有任何单元,但它的 length 属性中却显示有单元数量,这样奇特的数据结构会导致一些怪异的行为

b 在当前版本的 Chrome 显示为 [undefined, undefined, undefined],而 a 和 c 则为 [empty * 3],火狐显示的事 Array [<3 empty slots>]
更糟糕的是,a 和 b 的行为有时相同,有时又大相径庭,join 方法得到的结果是一样的
a.join('-') // "--"
b.join('-') //"--"
map 方法返回的结果却大相径庭
