这纯粹是一种使用JavaScript的灵活性练习。我试图用Javascript创建一个整数数组,没有循环,并以这种特殊的方式:
var a = Array(100).map(function(x, y) { return y + 1 });
我希望和整数数组1 - 100.相反它仍然未定义* 100?我甚至不能在map函数中调用console.log?
我从这篇伟大的帖子Sequences using JavaScript Array中了解到,下面的内容确实使用了Array.apply来完成目标,我只是理解为什么需要它?
var a = Array.apply(0, Array(100)).map(function(x,y) { return y + 1 }); a
感谢您的任何见解:)
答案 0 :(得分:1)
它主要用于内存空间优化,稀疏数组在内存中占用的空间较少。
各种"标志"使用undefined以便您可以在不爆炸内存空间的情况下执行此类操作:
var a = [];
a[2014] = 0;
console.log(a.length); // 2015
console.log(a); // [undefined x 2014, 0]