今天注意到vue官方demo的一个例子:
render: function (createElement) {
return createElement('div',
Array.apply(null, { length: 20 }).map(function () {
return createElement('p', 'hi')
})
)
}
一开始对Array.apply(null, {length: 20}) 感到迷惑,然后就百度了下发现这里有不少猫腻,Array(20)也是创建一个长度为20的数组;
直接在控制台测试:以下是结果
Array.apply(null, {length: 20}) : 创建了长度为20的数组并为每个元素赋值undefined,可用于map,filter.....等遍历。
Array(20): 只创建了长度为20的数组,并没有实际的元素存在,不可用map,filter......等遍历。
es6中的方法:
Array.from({length: 20}) 和 Array(20).fill(undefined) 表现跟Array.apply(null, {length: 20})一致。
这边做个记录,方便以后查看。