今天在看vue.js的render函数时,发现了下面代码
Array.apply(null, { length: 20 }).map(function () { return createElement(‘p‘, ‘hi‘) })
有两个疑问:1.apply的第二个参数不是必须是数组么? 2.为什么用apply,直接 Array(20) 也能创建一个长度为20的数组啊?
解答1:apply的第二个参数可以穿进去一个带length属性的对象也可以,因为检测的是length属性。
解答2:Array(20)创建出的数组虽然长度是20,但是创建出来的数组都没有初始化,你console看一下。而Array.apply(null,{length:20}) 创建出来的数组不仅长度是20,并且每一项都是undefined,已经初始化过了。