在Vue网格过渡中,官网一段写数组的代码如下:
cells:Array.apply(null, {length : 81}).map(function(_, index) {
return {
id: index,
number : index % 9 + 1
}
})
首先要知道,当Array当做函数调用时,他会创建并初始化一个数组对象。其实,在具有相同参数的情况下,Array()和new Array()效果是一样。
例如:
Array() // []
Array(3) // [, , ,]
Array(3, 11, 8) // [3, 11, 8]
/*注意第二个的‘空’数组
ES5 对空位的处理,已经很不一致了,大多数情况下会忽略空位。
forEach(), filter(), reduce(), every() 和some()都会跳过空位。
map()会跳过空位,但会保留这个值
join()和toString()会将空位视为undefined,而undefined和null会被处理成空字符串。
但是,ES6中Array.from方法会将数组的空位,转为undefined,也就是说,这个方法不会忽略空位。
*/
那么重点来了,Array.apply(null,{length: 81}) 和 new Array(81) 的区别在哪呢?